Fix more gutter close button alignment issues (#15233)

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

* shows proper cursor on hovering a block that's over a git hunk
* show gutter buttons better when git hunks are on the same line
* show deleted hunks' gutter buttons better when git blame info is shown
in the gutter

Release Notes:

- N/A
This commit is contained in:
Kirill Bulatov 2024-07-26 01:42:25 +03:00 committed by GitHub
parent 1da6a12bb4
commit 10c9e337cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 8 deletions

View file

@ -1970,6 +1970,7 @@ impl EditorElement {
max_width: text_hitbox.size.width.max(*scroll_width), max_width: text_hitbox.size.width.max(*scroll_width),
editor_style: &self.style, editor_style: &self.style,
})) }))
.cursor(CursorStyle::Arrow)
.on_mouse_down(MouseButton::Left, |_, cx| cx.stop_propagation()) .on_mouse_down(MouseButton::Left, |_, cx| cx.stop_propagation())
.into_any_element() .into_any_element()
} }
@ -4106,11 +4107,11 @@ fn prepaint_gutter_button(
); );
let indicator_size = button.layout_as_root(available_space, cx); let indicator_size = button.layout_as_root(available_space, cx);
let blame_offset = gutter_dimensions.git_blame_entries_width; let blame_width = gutter_dimensions.git_blame_entries_width;
let gutter_offset = rows_with_hunk_bounds let gutter_width = rows_with_hunk_bounds
.get(&row) .get(&row)
.map(|bounds| bounds.origin.x + bounds.size.width); .map(|bounds| bounds.size.width);
let left_offset = blame_offset.max(gutter_offset).unwrap_or(Pixels::ZERO); let left_offset = blame_width.max(gutter_width).unwrap_or_default();
let mut x = left_offset; let mut x = left_offset;
let available_width = gutter_dimensions.margin + gutter_dimensions.left_padding let available_width = gutter_dimensions.margin + gutter_dimensions.left_padding

View file

@ -13,8 +13,8 @@ use multi_buffer::{
use settings::SettingsStore; use settings::SettingsStore;
use text::{BufferId, Point}; use text::{BufferId, Point};
use ui::{ use ui::{
div, h_flex, v_flex, ActiveTheme, Context as _, ContextMenu, InteractiveElement, IntoElement, div, h_flex, rems, v_flex, ActiveTheme, Context as _, ContextMenu, InteractiveElement,
ParentElement, Pixels, Styled, ViewContext, VisualContext, IntoElement, ParentElement, Pixels, Styled, ViewContext, VisualContext,
}; };
use util::{debug_panic, RangeExt}; use util::{debug_panic, RangeExt};
@ -484,7 +484,10 @@ impl Editor {
.child( .child(
h_flex() h_flex()
.id("gutter hunk") .id("gutter hunk")
.pl(hunk_bounds.origin.x) .pl(gutter_dimensions.margin
+ gutter_dimensions
.git_blame_entries_width
.unwrap_or_default())
.max_w(hunk_bounds.size.width) .max_w(hunk_bounds.size.width)
.min_w(hunk_bounds.size.width) .min_w(hunk_bounds.size.width)
.size_full() .size_full()
@ -512,7 +515,7 @@ impl Editor {
.child( .child(
v_flex() v_flex()
.size_full() .size_full()
.pt(ui::rems(0.25)) .pt(rems(0.25))
.justify_start() .justify_start()
.child(close_button), .child(close_button),
), ),