diff --git a/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController+Window.swift b/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController+Window.swift index 48edf993c..0609ac4b3 100644 --- a/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController+Window.swift +++ b/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController+Window.swift @@ -84,7 +84,7 @@ extension SuggestionController { static func makeWindow() -> NSWindow { let window = NSWindow( contentRect: .zero, - styleMask: [.resizable, .fullSizeContentView, .nonactivatingPanel, .utilityWindow], + styleMask: [.borderless], backing: .buffered, defer: false ) @@ -97,8 +97,10 @@ extension SuggestionController { window.hasShadow = true window.isOpaque = false window.tabbingMode = .disallowed - window.hidesOnDeactivate = true + window.hidesOnDeactivate = false window.backgroundColor = .clear + window.canHide = false + window.acceptsMouseMovedEvents = true return window } diff --git a/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController.swift b/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController.swift index d8c32a51b..d5a8f2fdd 100644 --- a/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController.swift +++ b/Sources/CodeEditSourceEditor/CodeSuggestion/Window/SuggestionController.swift @@ -103,7 +103,10 @@ public final class SuggestionController: NSWindowController { /// Opens the window as a child of another window. public func showWindow(attachedTo parentWindow: NSWindow) { guard let window = window else { return } + + super.showWindow(nil) parentWindow.addChildWindow(window, ordered: .above) + window.orderFront(nil) // Close on window switch observer // Initialized outside of `setupEventMonitors` in order to grab the parent window @@ -118,8 +121,6 @@ public final class SuggestionController: NSWindowController { self?.close() } - super.showWindow(nil) - window.orderFront(nil) window.contentViewController?.viewWillAppear() } @@ -134,6 +135,12 @@ public final class SuggestionController: NSWindowController { contentViewController?.viewWillDisappear() } + // Clean up window observers + if let observer = windowResignObserver { + NotificationCenter.default.removeObserver(observer) + windowResignObserver = nil + } + super.close() }