Show git items in the panel only when in a git repository (#24865)

| Before | After | After2 |
| - | - | - |
| <img width="368" alt="Screenshot 2025-02-14 alle 13 45 41"
src="https://github.com/user-attachments/assets/9ed6f233-c7e3-45b4-b2cd-605b6f785cbe"
/> | <img width="367" alt="Screenshot 2025-02-14 alle 14 25 24"
src="https://github.com/user-attachments/assets/808da265-dd1d-4679-9b62-a4def459fc8f"
/> | <img width="371" alt="Screenshot 2025-02-14 alle 14 25 38"
src="https://github.com/user-attachments/assets/09d0e27e-1e58-43b4-9a35-eb14c0d14961"
/> |

Release Notes:

- If it is not a git repository it shows nothing.
- Fix stage and unstage title in context_menu
This commit is contained in:
Angelk90 2025-02-21 20:11:17 +01:00 committed by GitHub
parent 3759e0bf55
commit 17323ed7b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2059,6 +2059,11 @@ impl GitPanel {
let Some(entry) = self.entries.get(ix).and_then(|e| e.status_entry()) else { let Some(entry) = self.entries.get(ix).and_then(|e| e.status_entry()) else {
return; return;
}; };
let stage_title = if entry.status.is_staged() == Some(true) {
"Unstage File"
} else {
"Stage File"
};
let revert_title = if entry.status.is_deleted() { let revert_title = if entry.status.is_deleted() {
"Restore file" "Restore file"
} else if entry.status.is_created() { } else if entry.status.is_created() {
@ -2068,7 +2073,7 @@ impl GitPanel {
}; };
let context_menu = ContextMenu::build(window, cx, |context_menu, _, _| { let context_menu = ContextMenu::build(window, cx, |context_menu, _, _| {
context_menu context_menu
.action("Stage File", ToggleStaged.boxed_clone()) .action(stage_title, ToggleStaged.boxed_clone())
.action(revert_title, git::RestoreFile.boxed_clone()) .action(revert_title, git::RestoreFile.boxed_clone())
.separator() .separator()
.action("Open Diff", Confirm.boxed_clone()) .action("Open Diff", Confirm.boxed_clone())
@ -2312,15 +2317,17 @@ impl Render for GitPanel {
.size_full() .size_full()
.overflow_hidden() .overflow_hidden()
.bg(ElevationIndex::Surface.bg(cx)) .bg(ElevationIndex::Surface.bg(cx))
.children(self.render_panel_header(window, cx))
.child(if has_entries { .child(if has_entries {
self.render_entries(has_write_access, window, cx) v_flex()
.size_full()
.children(self.render_panel_header(window, cx))
.child(self.render_entries(has_write_access, window, cx))
.children(self.render_previous_commit(cx))
.child(self.render_commit_editor(window, cx))
.into_any_element() .into_any_element()
} else { } else {
self.render_empty_state(cx).into_any_element() self.render_empty_state(cx).into_any_element()
}) })
.children(self.render_previous_commit(cx))
.child(self.render_commit_editor(window, cx))
.children(self.context_menu.as_ref().map(|(menu, position, _)| { .children(self.context_menu.as_ref().map(|(menu, position, _)| {
deferred( deferred(
anchored() anchored()