diff --git a/crates/terminal_view/src/terminal_panel.rs b/crates/terminal_view/src/terminal_panel.rs index 25e4ad9d999..5b16ef40a22 100644 --- a/crates/terminal_view/src/terminal_panel.rs +++ b/crates/terminal_view/src/terminal_panel.rs @@ -317,7 +317,8 @@ impl TerminalPanel { if let Some(workspace) = workspace.upgrade() { let should_focus = workspace .update_in(&mut cx, |workspace, window, cx| { - workspace.active_item(cx).is_none() + !workspace.has_active_modal(window, cx) + && workspace.active_item(cx).is_none() && workspace .is_dock_at_position_open(terminal_panel.position(window, cx), cx) }) @@ -905,6 +906,14 @@ impl TerminalPanel { ) })); + let reveal_strategy = if workspace.has_active_modal(window, cx) + && matches!(reveal_strategy, RevealStrategy::Always) + { + RevealStrategy::NoFocus + } else { + reveal_strategy + }; + match reveal_strategy { RevealStrategy::Always => { workspace.focus_panel::(window, cx);