Do not change selections when opening FS entries (#21382)

Follow-up of https://github.com/zed-industries/zed/pull/21375

When changing selections for FS entries, outline panel will be forced to
change item to the first excerpt which is not what we want.

Release Notes:

- N/A
This commit is contained in:
Kirill Bulatov 2024-12-01 14:28:48 +02:00 committed by GitHub
parent 4d5415273e
commit 5f6b200d8d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -857,7 +857,7 @@ impl OutlinePanel {
fn open_entry( fn open_entry(
&mut self, &mut self,
entry: &PanelEntry, entry: &PanelEntry,
change_selection: bool, prefer_selection_change: bool,
change_focus: bool, change_focus: bool,
cx: &mut ViewContext<OutlinePanel>, cx: &mut ViewContext<OutlinePanel>,
) { ) {
@ -872,9 +872,11 @@ impl OutlinePanel {
Point::new(0.0, -(active_editor.read(cx).file_header_size() as f32)) Point::new(0.0, -(active_editor.read(cx).file_header_size() as f32))
}; };
let mut change_selection = prefer_selection_change;
let scroll_target = match entry { let scroll_target = match entry {
PanelEntry::FoldedDirs(..) | PanelEntry::Fs(FsEntry::Directory(..)) => None, PanelEntry::FoldedDirs(..) | PanelEntry::Fs(FsEntry::Directory(..)) => None,
PanelEntry::Fs(FsEntry::ExternalFile(buffer_id, _)) => { PanelEntry::Fs(FsEntry::ExternalFile(buffer_id, _)) => {
change_selection = false;
let scroll_target = multi_buffer_snapshot.excerpts().find_map( let scroll_target = multi_buffer_snapshot.excerpts().find_map(
|(excerpt_id, buffer_snapshot, excerpt_range)| { |(excerpt_id, buffer_snapshot, excerpt_range)| {
if &buffer_snapshot.remote_id() == buffer_id { if &buffer_snapshot.remote_id() == buffer_id {
@ -888,6 +890,7 @@ impl OutlinePanel {
Some(offset_from_top).zip(scroll_target) Some(offset_from_top).zip(scroll_target)
} }
PanelEntry::Fs(FsEntry::File(_, file_entry, ..)) => { PanelEntry::Fs(FsEntry::File(_, file_entry, ..)) => {
change_selection = false;
let scroll_target = self let scroll_target = self
.project .project
.update(cx, |project, cx| { .update(cx, |project, cx| {