diff --git a/src/ui/App.swift b/src/ui/App.swift index 436db2b3..25993b15 100644 --- a/src/ui/App.swift +++ b/src/ui/App.swift @@ -183,11 +183,15 @@ class App: AppCenterApplication { func showSecondaryWindow(_ window: NSWindow?) { if let window { NSScreen.updatePreferred() - NSScreen.preferred.repositionPanel(window) App.shared.activate(ignoringOtherApps: true) window.makeKeyAndOrderFront(nil) - // Use the center function to continue to center, the `repositionPanel` function cannot center, it may be a system bug - window.center() + // if the window was resized/repositioned by the user, restore the window the way it was + let restored = window.setFrameUsingName(window.frameAutosaveName) + if !restored { + NSScreen.preferred.repositionPanel(window) + // Use the center function to continue to center, the `repositionPanel` function cannot center, it may be a system bug + window.center() + } } } diff --git a/src/ui/DebugWindow.swift b/src/ui/DebugWindow.swift index 0f60e978..fa95444c 100644 --- a/src/ui/DebugWindow.swift +++ b/src/ui/DebugWindow.swift @@ -31,6 +31,7 @@ class DebugWindow: NSPanel { backing: .buffered, defer: false) setupWindow() setupView() + setFrameAutosaveName("DebugWindow") } private func setupWindow() { diff --git a/src/ui/FeedbackWindow.swift b/src/ui/FeedbackWindow.swift index 8b6e50ed..3af3a871 100644 --- a/src/ui/FeedbackWindow.swift +++ b/src/ui/FeedbackWindow.swift @@ -19,6 +19,7 @@ class FeedbackWindow: NSWindow { self.init(contentRect: .zero, styleMask: [.titled, .miniaturizable, .closable], backing: .buffered, defer: false) setupWindow() setupView() + setFrameAutosaveName("FeedbackWindow") } private func setupWindow() { diff --git a/src/ui/permission-window/PermissionsWindow.swift b/src/ui/permission-window/PermissionsWindow.swift index 8983d850..38d9d3c3 100644 --- a/src/ui/permission-window/PermissionsWindow.swift +++ b/src/ui/permission-window/PermissionsWindow.swift @@ -11,6 +11,7 @@ class PermissionsWindow: NSWindow { delegate = self setupWindow() setupView() + setFrameAutosaveName("PermissionsWindow") } func show() { diff --git a/src/ui/settings-window/SettingsWindow.swift b/src/ui/settings-window/SettingsWindow.swift index c5493075..c42a6345 100644 --- a/src/ui/settings-window/SettingsWindow.swift +++ b/src/ui/settings-window/SettingsWindow.swift @@ -517,6 +517,7 @@ class SettingsWindow: NSWindow { maxSize = NSSize(width: windowWidth, height: CGFloat.greatestFiniteMagnitude) setupWindow() setupView() + setFrameAutosaveName("SettingsWindow") } private func setupWindow() { diff --git a/src/ui/settings-window/tabs/AboutTab.swift b/src/ui/settings-window/tabs/AboutTab.swift index 79889a9a..3c6a5536 100644 --- a/src/ui/settings-window/tabs/AboutTab.swift +++ b/src/ui/settings-window/tabs/AboutTab.swift @@ -73,6 +73,7 @@ class AboutWindow: NSPanel { self.init(contentRect: NSRect(x: 0, y: 0, width: 600, height: 450), styleMask: [.utilityWindow, .titled, .closable], backing: .buffered, defer: false) setupWindow() setupView() + setFrameAutosaveName("AboutWindow") } private func setupWindow() {