terminal_view: Fix focusing of center-pane terminals (#37359)

With `reveal_stragegy=always` + `reveal_target=center`,
`TerminalPanel::spawn_task` activates & focuses the pane of the task.
This works fine in the terminal pane but doesn't for
`reveal_target=center`.

Please note: I'm not verified familiar with the architecture and
internal APIs of zed. If there's a better way or if this fix is a bad
idea, I'm fine with adapting this 😃

Closes #35908

Release Notes:

- Fixed task focus when re-spawning a task with `reveal_target=center`

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
This commit is contained in:
Moritz von Göwels
2025-09-03 14:23:46 +00:00
committed by GitHub
co-authored by Marshall Bowers
parent c1ca7303a8
commit 7327ef662b
+11 -6
View File
@@ -41,7 +41,7 @@ use workspace::{
ui::IconName,
};
use anyhow::{Context as _, Result, anyhow};
use anyhow::{Result, anyhow};
use zed_actions::assistant::InlineAssist;
const TERMINAL_PANEL_KEY: &str = "TerminalPanel";
@@ -905,11 +905,16 @@ impl TerminalPanel {
RevealStrategy::Always => match reveal_target {
RevealTarget::Center => {
task_workspace.update_in(cx, |workspace, window, cx| {
workspace
.active_item(cx)
.context("retrieving active terminal item in the workspace")?
.item_focus_handle(cx)
.focus(window);
let did_activate = workspace.activate_item(
&terminal_to_replace,
true,
true,
window,
cx,
);
anyhow::ensure!(did_activate, "Failed to retrieve terminal pane");
anyhow::Ok(())
})??;
}