aboutsummaryrefslogtreecommitdiff
path: root/src/app/input/navigate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/input/navigate.rs')
-rw-r--r--src/app/input/navigate.rs26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs
index 8d09c00a..b6edefaf 100644
--- a/src/app/input/navigate.rs
+++ b/src/app/input/navigate.rs
@@ -761,8 +761,9 @@ pub(super) fn execute_navigate_action_in_context(
leave_navigate_mode(state);
}
NavigateAction::CloseTab => {
- state.close_tab();
- leave_navigate_mode(state);
+ if !state.close_tab() {
+ leave_navigate_mode(state);
+ }
}
NavigateAction::RenamePane => {
if let Some(pane_id) = state
@@ -786,8 +787,9 @@ pub(super) fn execute_navigate_action_in_context(
leave_navigate_mode(state);
}
NavigateAction::ClosePane => {
- state.close_pane();
- leave_navigate_mode(state);
+ if !state.close_pane() {
+ leave_navigate_mode(state);
+ }
}
NavigateAction::EditScrollback => {}
NavigateAction::CopyMode => state.enter_copy_mode(terminal_runtimes),
@@ -1756,6 +1758,22 @@ last_pane = "prefix+tab"
assert_eq!(state.mode, Mode::Terminal);
}
+ #[test]
+ fn prefix_close_pane_last_parent_group_pane_opens_confirmation() {
+ let mut state = state_with_workspaces(&["main", "issue"]);
+ mark_worktree_space_member(&mut state, 0, "repo-key");
+ mark_worktree_space_member(&mut state, 1, "repo-key");
+ state.selected = 1;
+ state.active = Some(0);
+ state.mode = Mode::Navigate;
+
+ execute_navigate_action(&mut state, NavigateAction::ClosePane);
+
+ assert_eq!(state.selected, 0);
+ assert_eq!(state.mode, Mode::ConfirmClose);
+ assert_eq!(state.workspaces.len(), 2);
+ }
+
#[tokio::test]
async fn custom_command_runs_from_prefix_key_in_navigate_mode() {
let (_api_tx, api_rx) = tokio::sync::mpsc::unbounded_channel();