Skip to content

Commit b8a8e2f

Browse files
Merge pull request #4 from StuartCameronCode/fix/settings-window-lifecycle
Fix settings window not reopening after being closed
2 parents abb9d00 + fb4813b commit b8a8e2f

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

clive/CliveApp.swift

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,26 @@ class AppDelegate: NSObject, NSApplicationDelegate {
213213
@objc func openSettings() {
214214
if settingsWindow == nil {
215215
let view = SettingsView()
216-
settingsWindow = NSWindow(
216+
let window = NSWindow(
217217
contentRect: NSRect(x: 0, y: 0, width: 400, height: 300),
218218
styleMask: [.titled, .closable],
219219
backing: .buffered,
220220
defer: false
221221
)
222-
settingsWindow?.title = "Clive Settings"
223-
settingsWindow?.contentView = NSHostingView(rootView: view)
224-
settingsWindow?.center()
222+
window.title = "Clive Settings"
223+
window.contentView = NSHostingView(rootView: view)
224+
window.center()
225+
window.isReleasedWhenClosed = false
226+
227+
NotificationCenter.default.addObserver(
228+
forName: NSWindow.willCloseNotification,
229+
object: window,
230+
queue: .main
231+
) { [weak self] _ in
232+
self?.settingsWindow = nil
233+
}
234+
235+
settingsWindow = window
225236
}
226237
settingsWindow?.makeKeyAndOrderFront(nil)
227238
NSApp.activate(ignoringOtherApps: true)

0 commit comments

Comments
 (0)