git_ui: Toggle directory expansion with Enter key in tree view (#52965)

Erin van der Veen created

Semantics and code was mostly taken from the existing behaviour of the
Left/Right arrow keys.

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 is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes #51986

Release Notes:

- Added ability to toggle tree collapse in git panel

Change summary

crates/git_ui/src/git_panel.rs | 8 ++++++++
1 file changed, 8 insertions(+)

Detailed changes

crates/git_ui/src/git_panel.rs 🔗

@@ -1272,6 +1272,14 @@ impl GitPanel {
     }
 
     fn open_diff(&mut self, _: &menu::Confirm, window: &mut Window, cx: &mut Context<Self>) {
+        if let Some(GitListEntry::Directory(dir_entry)) = self
+            .selected_entry
+            .and_then(|i| self.entries.get(i))
+            .cloned()
+        {
+            self.toggle_directory(&dir_entry.key, window, cx);
+            return;
+        }
         maybe!({
             let entry = self.entries.get(self.selected_entry?)?.status_entry()?;
             let workspace = self.workspace.upgrade()?;