Properly propagate git statuses in the outline panel (#13150)

Kirill Bulatov and Max created

Release Notes:

- N/A

Co-authored-by: Max <max@zed.dev>

Change summary

crates/outline_panel/src/outline_panel.rs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Detailed changes

crates/outline_panel/src/outline_panel.rs 🔗

@@ -1769,8 +1769,10 @@ impl OutlinePanel {
                             .into_iter()
                             .map(|(worktree_id, (worktree_snapshot, entries))| {
                                 let mut entries = entries.into_iter().collect::<Vec<_>>();
-                                project::sort_worktree_entries(&mut entries);
+                                // For a proper git status propagation, we have to keep the entries sorted lexicographically.
+                                entries.sort_by(|a, b| a.path.as_ref().cmp(b.path.as_ref()));
                                 worktree_snapshot.propagate_git_statuses(&mut entries);
+                                project::sort_worktree_entries(&mut entries);
                                 (worktree_id, entries)
                             })
                             .flat_map(|(worktree_id, entries)| {