fix(macos): stabilize menu row width
This commit is contained in:
@@ -55,7 +55,6 @@ final class HighlightedMenuItemHostView: NSView {
|
|||||||
|
|
||||||
override func layout() {
|
override func layout() {
|
||||||
super.layout()
|
super.layout()
|
||||||
self.updateTargetWidthFromWindow()
|
|
||||||
self.hosting.frame = self.bounds
|
self.hosting.frame = self.bounds
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,17 +84,6 @@ final class HighlightedMenuItemHostView: NSView {
|
|||||||
self.frame = NSRect(origin: .zero, size: NSSize(width: self.targetWidth, height: size.height))
|
self.frame = NSRect(origin: .zero, size: NSSize(width: self.targetWidth, height: size.height))
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewDidMoveToWindow() {
|
|
||||||
super.viewDidMoveToWindow()
|
|
||||||
self.updateTargetWidthFromWindow()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func updateTargetWidthFromWindow() {
|
|
||||||
guard let width = self.window?.contentView?.bounds.width, width > 0 else { return }
|
|
||||||
if abs(width - self.targetWidth) < 0.5 { return }
|
|
||||||
self.targetWidth = width
|
|
||||||
self.updateSizing()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MenuHostedHighlightedItem: NSViewRepresentable {
|
struct MenuHostedHighlightedItem: NSViewRepresentable {
|
||||||
|
|||||||
@@ -737,6 +737,7 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
|
|||||||
|
|
||||||
private func initialWidth(for menu: NSMenu) -> CGFloat {
|
private func initialWidth(for menu: NSMenu) -> CGFloat {
|
||||||
let candidates: [CGFloat] = [
|
let candidates: [CGFloat] = [
|
||||||
|
menu.size.width,
|
||||||
menu.minimumWidth,
|
menu.minimumWidth,
|
||||||
self.lastKnownMenuWidth ?? 0,
|
self.lastKnownMenuWidth ?? 0,
|
||||||
self.fallbackWidth,
|
self.fallbackWidth,
|
||||||
|
|||||||
Reference in New Issue
Block a user