From eaa430843c80eddc578dd32b9906688dca07d97d Mon Sep 17 00:00:00 2001 From: Blankeos Date: Fri, 29 May 2026 14:40:42 +0800 Subject: [PATCH] fix: Prevent terminal from stealing modal focus. --- crates/terminal_view/src/terminal_panel.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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);