From 140349190a40f67dec3d31bebbeaa4e49ff9cb05 Mon Sep 17 00:00:00 2001 From: BillionClaw <267901332+BillionClaw@users.noreply.github.com> Date: Tue, 24 Mar 2026 07:41:47 +0800 Subject: [PATCH] fix(openFolder): set NSOpenPanel directoryURL to focused pane's working directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before: ⌘O always opened the file picker at ~/Documents (NSOpenPanel default). After: ⌘O now opens the picker at the focused pane's current working directory when available, falling back to ~/Documents otherwise. Fixes: #2010 --- Sources/ContentView.swift | 5 ++++- Sources/cmuxApp.swift | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Sources/ContentView.swift b/Sources/ContentView.swift index d76c23597d7a..891e98b17ae9 100644 --- a/Sources/ContentView.swift +++ b/Sources/ContentView.swift @@ -5975,8 +5975,11 @@ struct ContentView: View { panel.allowsMultipleSelection = false panel.title = String(localized: "panel.openFolder.title", defaultValue: "Open Folder") panel.prompt = String(localized: "panel.openFolder.prompt", defaultValue: "Open") + if let preferredDir = self.tabManager.selectedWorkspace?.focusedPanelId.flatMap({ self.tabManager.selectedWorkspace?.panelDirectories[$0] }), !preferredDir.isEmpty { + panel.directoryURL = URL(fileURLWithPath: preferredDir) + } if panel.runModal() == .OK, let url = panel.url { - tabManager.addWorkspace(workingDirectory: url.path) + self.tabManager.addWorkspace(workingDirectory: url.path) } } } diff --git a/Sources/cmuxApp.swift b/Sources/cmuxApp.swift index 1cc1f9fcf8fe..c926593db4bb 100644 --- a/Sources/cmuxApp.swift +++ b/Sources/cmuxApp.swift @@ -593,6 +593,9 @@ struct cmuxApp: App { panel.allowsMultipleSelection = false panel.title = String(localized: "menu.file.openFolder.panelTitle", defaultValue: "Open Folder") panel.prompt = String(localized: "menu.file.openFolder.panelPrompt", defaultValue: "Open") + if let preferredDir = self.activeTabManager.selectedWorkspace?.focusedPanelId.flatMap({ self.activeTabManager.selectedWorkspace?.panelDirectories[$0] }), !preferredDir.isEmpty { + panel.directoryURL = URL(fileURLWithPath: preferredDir) + } if panel.runModal() == .OK, let url = panel.url { if let appDelegate = AppDelegate.shared { if appDelegate.addWorkspaceInPreferredMainWindow( @@ -602,7 +605,7 @@ struct cmuxApp: App { appDelegate.openNewMainWindow(nil) } } else { - activeTabManager.addWorkspace(workingDirectory: url.path) + self.activeTabManager.addWorkspace(workingDirectory: url.path) } } }