From 7f40e0097b4fe0d44dabecaa88baf476f3a0b8e9 Mon Sep 17 00:00:00 2001 From: austinpower1258 Date: Fri, 13 Mar 2026 12:53:20 -0700 Subject: [PATCH] fix(cmux): focus close confirmation actions --- Sources/TabManager.swift | 16 +++++++++------- Sources/Workspace.swift | 6 ++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Sources/TabManager.swift b/Sources/TabManager.swift index fc3b596c..069f5459 100644 --- a/Sources/TabManager.swift +++ b/Sources/TabManager.swift @@ -1587,6 +1587,7 @@ class TabManager: ObservableObject { if let confirmCloseHandler { return confirmCloseHandler(title, message, acceptCmdD) } + _ = acceptCmdD let alert = NSAlert() alert.messageText = title @@ -1596,16 +1597,17 @@ class TabManager: ObservableObject { alert.addButton(withTitle: String(localized: "common.cancel", defaultValue: "Cancel")) if let closeButton = alert.buttons.first { - // Keep Return/Enter bound to the primary destructive action for all close prompts. + closeButton.keyEquivalent = "\r" + closeButton.keyEquivalentModifierMask = [] alert.window.defaultButtonCell = closeButton.cell as? NSButtonCell + alert.window.initialFirstResponder = closeButton + } + if let cancelButton = alert.buttons.dropFirst().first { + cancelButton.keyEquivalent = "\u{1b}" } - // macOS convention: Cmd+D = confirm destructive close (e.g. "Don't Save"). - // We only opt into this for the "close last workspace => close window" path to avoid - // conflicting with app-level Cmd+D (split right) during normal usage. - if acceptCmdD, let closeButton = alert.buttons.first { - closeButton.keyEquivalent = "d" - closeButton.keyEquivalentModifierMask = [.command] + if NSApp.activationPolicy() == .regular { + NSApp.activate(ignoringOtherApps: true) } return alert.runModal() == .alertFirstButtonReturn diff --git a/Sources/Workspace.swift b/Sources/Workspace.swift index 1ba2fd77..aedb0657 100644 --- a/Sources/Workspace.swift +++ b/Sources/Workspace.swift @@ -4148,7 +4148,13 @@ extension Workspace: BonsplitDelegate { alert.addButton(withTitle: String(localized: "common.cancel", defaultValue: "Cancel")) if let closeButton = alert.buttons.first { + closeButton.keyEquivalent = "\r" + closeButton.keyEquivalentModifierMask = [] alert.window.defaultButtonCell = closeButton.cell as? NSButtonCell + alert.window.initialFirstResponder = closeButton + } + if let cancelButton = alert.buttons.dropFirst().first { + cancelButton.keyEquivalent = "\u{1b}" } // Prefer a sheet if we can find a window, otherwise fall back to modal.