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:
co-authored by
Marshall Bowers
parent
c1ca7303a8
commit
7327ef662b
@@ -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(())
|
||||
})??;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user