aboutsummaryrefslogtreecommitdiff
path: root/src/app/api
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 14:48:57 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 14:50:13 +0300
commit57c880f0ebaa5011abc90f4e2fd4f84fc072ce35 (patch)
tree9f662b19cec2e9c9e50e87eb5e96def9e8ae9822 /src/app/api
parent9eec3029e13b791b8a4954e38d5bb7db6e2ff68f (diff)
feat: add global last-pane navigation
refs #287
Diffstat (limited to 'src/app/api')
-rw-r--r--src/app/api/panes.rs6
-rw-r--r--src/app/api/tabs.rs6
2 files changed, 6 insertions, 6 deletions
diff --git a/src/app/api/panes.rs b/src/app/api/panes.rs
index d5dcb132..9a31ec34 100644
--- a/src/app/api/panes.rs
+++ b/src/app/api/panes.rs
@@ -34,6 +34,7 @@ impl App {
let default_shell = self.state.default_shell.clone();
let scrollback_limit_bytes = self.state.pane_scrollback_limit_bytes;
let host_terminal_theme = self.state.host_terminal_theme;
+ let previous_focus = self.state.current_pane_focus_target();
let Some(ws) = self.state.workspaces.get_mut(ws_idx) else {
return pane_not_found(id, &params.target_pane_id);
};
@@ -57,8 +58,9 @@ impl App {
None => return pane_not_found(id, &params.target_pane_id),
};
if params.focus {
- self.state.switch_workspace(ws_idx);
- self.state.switch_tab(target_tab_idx);
+ self.state.switch_workspace_tab(ws_idx, target_tab_idx);
+ self.state
+ .record_pane_focus_change(previous_focus, ws_idx, new_pane.pane_id);
self.state.mode = Mode::Terminal;
}
self.terminal_runtimes
diff --git a/src/app/api/tabs.rs b/src/app/api/tabs.rs
index 06d59fe3..0344fcea 100644
--- a/src/app/api/tabs.rs
+++ b/src/app/api/tabs.rs
@@ -109,8 +109,7 @@ impl App {
}
}
if focus {
- self.state.switch_workspace(ws_idx);
- self.state.switch_tab(tab_idx);
+ self.state.switch_workspace_tab(ws_idx, tab_idx);
self.state.mode = Mode::Terminal;
}
self.schedule_session_save();
@@ -142,8 +141,7 @@ impl App {
let Some((ws_idx, tab_idx)) = self.parse_tab_id(&target.tab_id) else {
return tab_not_found(id, &target.tab_id);
};
- self.state.switch_workspace(ws_idx);
- self.state.switch_tab(tab_idx);
+ self.state.switch_workspace_tab(ws_idx, tab_idx);
let tab = self.tab_info(ws_idx, tab_idx).unwrap();
encode_success(id, ResponseResult::TabInfo { tab })