From 61b932df18aa022c083d41b2b1a4671826f1dce6 Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Thu, 15 Oct 2026 00:30:02 +0700 Subject: [PATCH] fix(settings): open the settings window again from Cmd-comma and links --- .../Views/Settings/SettingsWindowController.swift | 7 ++++++- .../Views/Settings/SettingsWindowTitleTests.swift | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/TablePro/Views/Settings/SettingsWindowController.swift b/TablePro/Views/Settings/SettingsWindowController.swift index 16d069c0c3..4bd656edc0 100644 --- a/TablePro/Views/Settings/SettingsWindowController.swift +++ b/TablePro/Views/Settings/SettingsWindowController.swift @@ -27,7 +27,12 @@ internal final class SettingsWindowController: NSWindowController { contentViewController as? SettingsPaneTabViewController } - internal convenience init(registryClient: RegistryClient = .shared) { + // A defaulted parameter would let `SettingsWindowController()` resolve to the inherited `init()`, which builds no window. + internal convenience init() { + self.init(registryClient: .shared) + } + + internal convenience init(registryClient: RegistryClient) { let panes = SettingsPaneTabViewController(registryClient: registryClient) /// `NSWindow(contentViewController:)` binds the window title to the content view diff --git a/TableProTests/Views/Settings/SettingsWindowTitleTests.swift b/TableProTests/Views/Settings/SettingsWindowTitleTests.swift index 249675b605..ef9bd473ff 100644 --- a/TableProTests/Views/Settings/SettingsWindowTitleTests.swift +++ b/TableProTests/Views/Settings/SettingsWindowTitleTests.swift @@ -124,4 +124,16 @@ final class SettingsWindowTitleTests: XCTestCase { XCTAssertEqual(window.contentMinSize, SettingsPaneTabViewController.paneSize) } + + func testTheInitializerPresentUsesBuildsTheSettingsWindow() { + AppStorageEnvironment.shared.defaults.set( + SettingsPane.general.rawValue, + forKey: PreferenceKeys.selectedSettingsPane.name + ) + let controller = SettingsWindowController() + guard let window = controller.window else { return XCTFail("Cmd-comma and settings links present this controller") } + windows.append(window) + + XCTAssertEqual(window.identifier?.rawValue, WindowIdentifier.settings) + } }