editor: Fix incorrect hover popup row clamping (#41645)

Fixes ZED-2TR
Fixes ZED-2TQ
Fixes ZED-2TB
Fixes ZED-2SW
Fixes ZED-2SQ

Release Notes:

- Fixed panic in repainting hover popups

Co-authored by: David <david@zed.dev>
This commit is contained in:
Lukas Wirth
2025-10-31 14:24:23 +00:00
committed by GitHub
parent 1f938c08d2
commit c6d61870e2
2 changed files with 23 additions and 17 deletions
+7 -5
View File
@@ -5114,19 +5114,21 @@ impl EditorElement {
cx,
)
});
let Some((position, hover_popovers)) = hover_popovers else {
let Some((popover_position, hover_popovers)) = hover_popovers else {
return;
};
// This is safe because we check on layout whether the required row is available
let hovered_row_layout =
&line_layouts[position.row().minus(visible_display_row_range.start) as usize];
let hovered_row_layout = &line_layouts[popover_position
.row()
.minus(visible_display_row_range.start)
as usize];
// Compute Hovered Point
let x = hovered_row_layout.x_for_index(position.column() as usize)
let x = hovered_row_layout.x_for_index(popover_position.column() as usize)
- Pixels::from(scroll_pixel_position.x);
let y = Pixels::from(
position.row().as_f64() * ScrollPixelOffset::from(line_height)
popover_position.row().as_f64() * ScrollPixelOffset::from(line_height)
- scroll_pixel_position.y,
);
let hovered_point = content_origin + point(x, y);