From 5c6dbc3ab2b0d5636c55a7d02e05712ac647cda4 Mon Sep 17 00:00:00 2001
From: Sathwik Chirivelli <146921254+chirivelli@users.noreply.github.com>
Date: Fri, 31 Jul 2026 23:41:47 +0530
Subject: [PATCH] solo_diff_view: Hide multibuffer controls in solo diffs
(#61998)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Objective
Remove the redundant expand/collapse-all-files control from solo diff
views. A solo diff represents one file, so the multibuffer-wide control
is not applicable and duplicates the per-file full-file/changes-only
toggle.
## Solution
Treat searchable items that intentionally hide their underlying
splittable editor as ineligible for the generic multibuffer
expand/collapse control.
This keeps search bound to the focused side of a split diff while
preserving the existing expand/collapse controls in Project Diff, Branch
Diff, staged/unstaged diffs, Commit View, and other regular multibuffer
views.
## Testing
- `cargo -q test -p search test_uses_primary_left_when_in_multi_buffer
-- --nocapture`
- `cargo -q test -p search buffer_search -- --nocapture` (26 passed)
- `git diff --check`
- Manually verified the solo diff no longer shows the
expand/collapse-all-files control and that the full-file/changes-only
toggle remains available.
Reviewers can open a file from Project Diff, use Option+Enter to switch
between Project Diff and Solo Diff, and verify search follows the
focused side in split diff mode.
## Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
## Showcase
Solo diff views now retain the full-file/changes-only toggle without
showing the unrelated expand/collapse-all-files control.
Click to view showcase
---
Release Notes:
- Fixed a redundant expand/collapse-all-files control appearing in solo
diff views.
---
crates/search/src/buffer_search.rs | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs
index a379847295..83a0575c42 100644
--- a/crates/search/src/buffer_search.rs
+++ b/crates/search/src/buffer_search.rs
@@ -951,7 +951,7 @@ impl BufferSearchBar {
}
fn deployed_toolbar_location(&self, cx: &App) -> ToolbarItemLocation {
- if self.needs_expand_collapse_option(cx) && !self.uses_hidden_splittable_editor(cx) {
+ if self.needs_expand_collapse_option(cx) {
ToolbarItemLocation::PrimaryLeft
} else {
ToolbarItemLocation::Secondary
@@ -976,10 +976,11 @@ impl BufferSearchBar {
// We provide an expand/collapse button if we are in a multibuffer
// and not doing a project search.
fn needs_expand_collapse_option(&self, cx: &App) -> bool {
- self.active_searchable_item.as_ref().is_some_and(|item| {
- item.buffer_kind(cx) == ItemBufferKind::Multibuffer
- && !item.supported_options(cx).find_in_results
- })
+ !self.uses_hidden_splittable_editor(cx)
+ && self.active_searchable_item.as_ref().is_some_and(|item| {
+ item.buffer_kind(cx) == ItemBufferKind::Multibuffer
+ && !item.supported_options(cx).find_in_results
+ })
}
fn toggle_fold_all(&mut self, _: &ToggleFoldAll, window: &mut Window, cx: &mut Context) {