diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-31 21:18:40 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-31 21:18:40 +0300 |
| commit | 8cf0e9b35b00f9dd91270fcd3931015d61ffd8a0 (patch) | |
| tree | 2b76b158344fdbe0de17c6abe98564a262266d2f /src/app/input/navigate.rs | |
| parent | 859185b491c5a80e888ba8f9dd213d2c35baa034 (diff) | |
fix: confirm implicit worktree group close
refs #369
Diffstat (limited to 'src/app/input/navigate.rs')
| -rw-r--r-- | src/app/input/navigate.rs | 26 |
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(); |
