ZIm/crates
tims 7ed834bd79
terminal: Fix unresponsive buttons on load until center pane is clicked + Auto-focus docked terminal on load if no other item is focused (#23039)
Closes #23006

This PR should have been split into two, but since the changes are
related, I merged them into one.

1. On load, the title bar actions and bottom bar toggles are
unresponsive until the center pane is clicked. This happens because the
terminal captures focus (even if it's closed) long after the workspace
sets focus to itself during loading.

The issue was in the `focus_view` call used in the `new` method of
`TerminalPanel`. Since new terminal views can be created behind the
scenes (i.e., without the terminal being visible to the user), we
shouldn't handle focus for the terminal in this case. Removing
`focus_view` from the `new` method has no impact on the existing
terminal focusing logic. I've tested scenarios such as creating new
terminals, splitting terminals, zooming, etc., and everything works as
expected.

2. Currently, on load, docked terminals do not automatically focus when
they are only visible item to the user. This PR implements it.

Before/After:

1. When only the dock terminal is visible on load. Terminal is focused.

<img
src="https://github.com/user-attachments/assets/af8848aa-ccb5-4a3b-b2c6-486e8d588f09"
alt="image" height="280px" />

<img
src="https://github.com/user-attachments/assets/8f76ca2e-de29-4cc0-979b-749b50a00bbd"
alt="image" height="280px" />

2. When other items are visible along with the dock terminal on load.
Editor is focused.

<img
src="https://github.com/user-attachments/assets/d3248272-a75d-4763-9e99-defb8a369b68"
alt="image" height="280px" />

<img
src="https://github.com/user-attachments/assets/fba5184e-1ab2-406c-9669-b141aaf1c32f"
alt="image" height="280px" />

3. Multiple tabs along with split panes. Last terminal is focused.

<img
src="https://github.com/user-attachments/assets/7a10c3cf-8bb3-4b88-aacc-732b678bee19"
alt="image" height="270px" />

<img
src="https://github.com/user-attachments/assets/4d16e98f-9d7a-45f6-8701-d6652e411d3b"
alt="image" height="270px" />

Future:

When a docked terminal is in a zoomed state and Zed is loaded, we should
prioritize focusing on the terminal over the active item (e.g., an
editor) behind it. This hasn't been implemented in this PR because the
zoomed state during the load function is stale. The correct state is
received later via the workspace. I'm still investigating where exactly
this should be handled, so this will be a separate PR.

cc: @SomeoneToIgnore 

Release Notes:

- Fixed unresponsive buttons on load until the center pane is clicked.  
- Added auto-focus for the docked terminal on load when no other item is
focused.
2025-01-13 15:11:45 +00:00
..
activity_indicator Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
anthropic anthropic: Allow specifying additional beta headers for custom models (#20551) 2025-01-03 23:46:32 +00:00
assets add ui::Vector and separate images from icons (#17815) 2024-09-13 17:44:16 -04:00
assistant Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
assistant2 assistant2: Make ContextStore::insert_* methods private (#22989) 2025-01-10 22:50:33 +00:00
assistant_slash_command Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
assistant_tool Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
assistant_tools assistant2: Add support for using tools (#21190) 2024-11-25 19:44:34 -05:00
audio Update Rust crate rodio to 0.20.0 (#20955) 2024-11-28 10:58:36 +02:00
auto_update Extract auto_update_ui crate (#21008) 2024-11-21 14:11:57 -05:00
auto_update_ui Dequalify WindowContext and ViewContext references (#22477) 2024-12-28 23:09:55 +00:00
breadcrumbs chore: Remove outline dependency from breadcrumbs (#22504) 2024-12-30 12:08:26 +00:00
call More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
channel Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
cli linux: Fix issue with project-specific env not being found via .envrc (direnv) (#22803) 2025-01-08 16:38:19 +00:00
client deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
clock Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
collab Add more metrics for Fireworks Completion Requested (#23062) 2025-01-13 12:04:28 +00:00
collab_ui collab_ui: Show the chat panel icon when the chat panel is active (#22593) 2025-01-02 22:53:34 +00:00
collections Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
command_palette Match keymap-style action names in command palette (#22149) 2024-12-19 12:48:54 +00:00
command_palette_hooks Use the same InlineAssist action between both assistant and assistant2 (#22126) 2024-12-16 23:57:07 -05:00
context_server Dequalify WindowContext and AsyncWindowContext identifiers (#22444) 2024-12-28 21:21:32 +00:00
context_server_settings Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
copilot Animate Zeta button while generating completions (#22899) 2025-01-09 15:24:35 +00:00
db chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
diagnostics Release syntax aware heuristic expansion of diagnostic excerpts (#22858) 2025-01-08 20:53:52 +00:00
docs_preprocessor Don't rely on relative path for docs preprocessor (#16883) 2024-08-26 11:43:13 -04:00
editor Clarify logic for Autoscroll::newest() and Autoscroll::fit() (#23048) 2025-01-13 05:33:24 +00:00
evals windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
extension extension: Fix manifest filename in error message (#22906) 2025-01-09 17:38:46 +00:00
extension_api zed_extension_api: Add a short explanation of repo format (#21824) 2024-12-10 15:04:47 -05:00
extension_cli Add new extension crate (#20089) 2024-11-01 13:20:30 -04:00
extension_host Add telemetry::event! (#22146) 2024-12-17 11:39:18 -07:00
extensions_ui extensions_ui: Show an error toast when a dev extension fails to install (#22914) 2025-01-09 19:38:16 +00:00
feature_flags Add placeholder git panel (#21894) 2024-12-11 22:13:52 -05:00
feedback Dequalify WindowContext and AsyncWindowContext identifiers (#22444) 2024-12-28 21:21:32 +00:00
file_finder Cleanups preparing for WindowContext refactor (#22475) 2024-12-28 21:36:14 +00:00
file_icons Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
fireworks zeta: Report Fireworks request data to Snowflake (#22973) 2025-01-10 22:40:54 +00:00
fs deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Fuzzy match performance improvements redo (#22561) 2025-01-02 05:31:06 +00:00
git Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
git_hosting_providers Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
git_ui git_ui: Update commit composer and git status entry UI (#22738) 2025-01-07 18:03:16 +00:00
go_to_line Only debounce the cursor position in multibuffer excerpts (#21946) 2024-12-12 18:27:06 -08:00
google_ai google_ai: Add Gemini 2.0 Flash support (#22665) 2025-01-06 21:28:31 +00:00
gpui Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
gpui_macros Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
html_to_markdown Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
http_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
image_viewer chore: Add missing test-support features to terminal_view and image_viewer (#22782) 2025-01-07 17:19:22 +00:00
indexed_docs Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
inline_completion Animate Zeta button while generating completions (#22899) 2025-01-09 15:24:35 +00:00
inline_completion_button Animate Zeta button while generating completions (#22899) 2025-01-09 15:24:35 +00:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
language Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
language_extension Add language icons to the language selector (#21298) 2024-12-02 15:01:09 -03:00
language_model assistant2: Small misc efficiency improvements (#22947) 2025-01-10 09:20:15 +00:00
language_model_selector language_model_selector: Refresh the models when the providers change (#22624) 2025-01-03 19:38:08 +00:00
language_models anthropic: Allow specifying additional beta headers for custom models (#20551) 2025-01-03 23:46:32 +00:00
language_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
language_tools Fix jank in LSP debug log autoscroll (#22998) 2025-01-11 05:59:21 +00:00
languages Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
livekit_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
livekit_client_macos Rename livekit_client_macos test_app to suppress warnings (#22719) 2025-01-06 19:17:53 +00:00
livekit_server Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
lsp deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
markdown Do not show copy buttons in editor's hover popovers (#22962) 2025-01-10 14:16:52 +00:00
markdown_preview Add tooltip for Markdown Preview copy code button (#22057) 2024-12-17 14:46:38 -05:00
media Switch to a single GPU context in Blade (#20853) 2024-12-18 14:47:09 -07:00
menu Show restart transformation button after successful inline assist (#20439) 2024-12-13 20:31:54 -08:00
multi_buffer Fix outline items navigation (#22890) 2025-01-09 10:25:02 +00:00
node_runtime windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
notifications Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
ollama Fix inaccurate Ollama context length for qwen2.5 models (#20933) 2024-11-22 10:10:01 -05:00
open_ai Introduce staff-only inline completion provider (#21739) 2024-12-09 14:26:36 +01:00
outline chore: Remove outline dependency from breadcrumbs (#22504) 2024-12-30 12:08:26 +00:00
outline_panel Fix outline items navigation (#22890) 2025-01-09 10:25:02 +00:00
paths Add initial FreeBSD support (#20480) 2024-11-11 18:39:05 +01:00
picker Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
prettier Add .prettierignore support (#21297) 2024-12-12 15:45:44 -08:00
project Include display text for LSP commands in errors (#23012) 2025-01-11 21:59:06 +00:00
project_panel Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
project_symbols Add and use CodeLabel::filter_text() (#22054) 2024-12-15 22:24:41 -07:00
proto Add support for rename with language servers that lack prepareRename (#23000) 2025-01-11 21:22:17 +00:00
recent_projects Fix empty title in Recent Projects (#21952) 2025-01-07 03:45:38 +00:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
remote ssh remoting: Improve error message if netcat is missing (#22767) 2025-01-07 13:16:52 +00:00
remote_server deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
repl chore: Add missing test-support features to terminal_view and image_viewer (#22782) 2025-01-07 17:19:22 +00:00
reqwest_client assistant: Remove low_speed_timeout (#20681) 2024-11-15 07:37:31 +01:00
rich_text Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
rope rope: Minor optimization for tab indices (#20911) 2024-11-21 08:48:13 +01:00
rpc Include outline when predicting edits with Zeta (#22895) 2025-01-09 14:26:33 +00:00
search Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
semantic_index deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
session chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
settings Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
settings_ui Toggle & Switch (#21979) 2024-12-13 14:23:02 -05:00
snippet Snippet choices (#13958) 2024-11-18 22:56:34 +01:00
snippet_provider Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
snippets_ui Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
sqlez Update rustls and sqlx (#21506) 2024-12-03 23:22:26 -05:00
sqlez_macros Add initial FreeBSD support (#20480) 2024-11-11 18:39:05 +01:00
story story: Use itertools as a workspace dependency (#22919) 2025-01-09 21:19:17 +00:00
storybook Dequalify WindowContext and ViewContext references (#22477) 2024-12-28 23:09:55 +00:00
sum_tree Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
supermaven Animate Zeta button while generating completions (#22899) 2025-01-09 15:24:35 +00:00
supermaven_api chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
tab_switcher Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
task Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
tasks_ui Improve truncate efficiency and fix OBOE in truncate_and_remove_front (#22591) 2025-01-02 22:35:36 +00:00
telemetry Allow telemetry::event! with no properties (#22190) 2024-12-18 09:41:47 -07:00
telemetry_events Improve Linux panic reporting (#22202) 2024-12-22 08:20:17 +00:00
terminal deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
terminal_view terminal: Fix unresponsive buttons on load until center pane is clicked + Auto-focus docked terminal on load if no other item is focused (#23039) 2025-01-13 15:11:45 +00:00
text Support diagnostic navigation in multibuffers (#22620) 2025-01-03 18:07:56 +00:00
theme Move git status out of Entry (#22224) 2025-01-04 01:00:16 +00:00
theme_extension Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
theme_importer deps: Bump indexmap to 2.0 (#22567) 2025-01-02 12:07:46 +00:00
theme_selector More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
time_format chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
title_bar Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
toolchain_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
ui Improve doc comments about keybinding order (#23014) 2025-01-11 22:47:42 +00:00
ui_input Remove usage of use gpui::* (#22310) 2024-12-20 22:52:11 +00:00
ui_macros Fix DynamicSpacing docs (#20509) 2024-11-11 12:58:39 -05:00
util Add a dedicated action to open files (#22625) 2025-01-08 14:29:15 +00:00
vcs_menu Only count existing branches in picker search (#22908) 2025-01-09 18:55:19 +00:00
vim Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
vim_mode_setting Extract VimModeSetting to its own crate (#21019) 2024-11-21 16:24:38 -05:00
welcome ui: Update Checkbox design (#22794) 2025-01-07 21:11:39 +00:00
workspace terminal: Fix unresponsive buttons on load until center pane is clicked + Auto-focus docked terminal on load if no other item is focused (#23039) 2025-01-13 15:11:45 +00:00
worktree deps: Bump smol to 2.0 (#22956) 2025-01-10 13:38:00 +00:00
zed Introduce UI affordances to make enabling/disabling inline completions easier (#22894) 2025-01-09 13:33:30 +00:00
zed_actions Improve keymap json schema (#23044) 2025-01-13 02:34:35 +00:00
zeta Improve prompt caching for edit prediction (#23061) 2025-01-13 10:58:49 +00:00