feat: remember position/size of secondary windows (closes #5305)

This commit is contained in:
lwouis committed 2026-02-19 23:20:14 +01:00
1 parent c51376fd26
commit 4b85fb8cf7
6 files changed
+12 -3

No files matched your search

+7 -3
View File
@@ -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()
}
}
}
+1
View File
@@ -31,6 +31,7 @@ class DebugWindow: NSPanel {
backing: .buffered, defer: false)
setupWindow()
setupView()
setFrameAutosaveName("DebugWindow")
}
private func setupWindow() {
+1
View File
@@ -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() {
@@ -11,6 +11,7 @@ class PermissionsWindow: NSWindow {
delegate = self
setupWindow()
setupView()
setFrameAutosaveName("PermissionsWindow")
}
func show() {
@@ -517,6 +517,7 @@ class SettingsWindow: NSWindow {
maxSize = NSSize(width: windowWidth, height: CGFloat.greatestFiniteMagnitude)
setupWindow()
setupView()
setFrameAutosaveName("SettingsWindow")
}
private func setupWindow() {
@@ -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() {