diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-23 00:32:46 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-23 00:32:46 +0300 |
| commit | 3de6ea799965a7d2aad0f7db2f23f54cd24cb039 (patch) | |
| tree | c9233a7f3d432aed7761c9db9c0072fee4ff5de2 /src/app/api/tabs.rs | |
| parent | 0fec1199671becba511e03d98a4921e375a46fe3 (diff) | |
feat: configure new terminal cwd
Diffstat (limited to 'src/app/api/tabs.rs')
| -rw-r--r-- | src/app/api/tabs.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/app/api/tabs.rs b/src/app/api/tabs.rs index 7978a17f..06d59fe3 100644 --- a/src/app/api/tabs.rs +++ b/src/app/api/tabs.rs @@ -63,15 +63,13 @@ impl App { } else { return encode_error(id, "workspace_not_found", "no active workspace"); }; - let cwd = cwd - .map(PathBuf::from) - .or_else(|| { - self.state - .focused_runtime_in_workspace(&self.terminal_runtimes, ws_idx) - .and_then(|rt| rt.cwd()) - }) - .or_else(|| std::env::current_dir().ok()) - .unwrap_or_else(|| PathBuf::from("/")); + let cwd = cwd.map(PathBuf::from).unwrap_or_else(|| { + let follow_cwd = self + .state + .focused_runtime_in_workspace(&self.terminal_runtimes, ws_idx) + .and_then(|rt| rt.cwd()); + self.resolve_new_terminal_cwd(follow_cwd) + }); let (rows, cols) = self.state.estimate_pane_size(); let default_shell = self.state.default_shell.clone(); let scrollback_limit_bytes = self.state.pane_scrollback_limit_bytes; |
