outline_panel: Remove toggle expanded behavior from OpenSelectedEntry (#42214)

Fixed outline panel space key behavior by removing duplicate toggle call

The `open_selected_entry` function in `outline_panel.rs` was incorrectly
calling `self.toggle_expanded(&selected_entry, window, cx)` in addition
to its primary logic, causing the space key to both open/close entries
AND toggle their expanded state. Removed the redundant `toggle_expanded`
call to achieve the intended behavior.

Closes #41711

Release Notes:

- Fixed issue with the outline panel where pressing space would cause an
open selected entry to collapse and cause a closed selected entry to
open.

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
This commit is contained in:
Kevin Rubio
2025-11-14 01:07:22 +05:30
committed by GitHub
co-authored by Smit Barmase
parent fa0c7500c1
commit c626e770a0
+6 -7
View File
@@ -986,7 +986,6 @@ impl OutlinePanel {
if self.filter_editor.focus_handle(cx).is_focused(window) {
cx.propagate()
} else if let Some(selected_entry) = self.selected_entry().cloned() {
self.toggle_expanded(&selected_entry, window, cx);
self.scroll_editor_to_entry(&selected_entry, true, true, window, cx);
}
}
@@ -5845,7 +5844,7 @@ mod tests {
}
#[gpui::test]
async fn test_multiple_workrees(cx: &mut TestAppContext) {
async fn test_multiple_worktrees(cx: &mut TestAppContext) {
init_test(cx);
let fs = FakeFs::new(cx.background_executor.clone());
@@ -5951,7 +5950,7 @@ two/
outline_panel.update_in(cx, |outline_panel, window, cx| {
outline_panel.select_previous(&SelectPrevious, window, cx);
outline_panel.open_selected_entry(&OpenSelectedEntry, window, cx);
outline_panel.collapse_selected_entry(&CollapseSelectedEntry, window, cx);
});
cx.executor()
.advance_clock(UPDATE_DEBOUNCE + Duration::from_millis(100));
@@ -5977,7 +5976,7 @@ two/
outline_panel.update_in(cx, |outline_panel, window, cx| {
outline_panel.select_next(&SelectNext, window, cx);
outline_panel.open_selected_entry(&OpenSelectedEntry, window, cx);
outline_panel.collapse_selected_entry(&CollapseSelectedEntry, window, cx);
});
cx.executor()
.advance_clock(UPDATE_DEBOUNCE + Duration::from_millis(100));
@@ -6000,7 +5999,7 @@ two/ <==== selected"#,
});
outline_panel.update_in(cx, |outline_panel, window, cx| {
outline_panel.open_selected_entry(&OpenSelectedEntry, window, cx);
outline_panel.expand_selected_entry(&ExpandSelectedEntry, window, cx);
});
cx.executor()
.advance_clock(UPDATE_DEBOUNCE + Duration::from_millis(100));
@@ -7532,7 +7531,7 @@ outline: fn main()"
cx.update(|window, cx| {
outline_panel.update(cx, |outline_panel, cx| {
outline_panel.open_selected_entry(&OpenSelectedEntry, window, cx);
outline_panel.collapse_selected_entry(&CollapseSelectedEntry, window, cx);
});
});
@@ -7564,7 +7563,7 @@ outline: fn main()"
cx.update(|window, cx| {
outline_panel.update(cx, |outline_panel, cx| {
outline_panel.open_selected_entry(&OpenSelectedEntry, window, cx);
outline_panel.expand_selected_entry(&ExpandSelectedEntry, window, cx);
});
});