diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index c0aa4c332c382bc69b2f607923fb8204fb931ef7..a1c9e4a11b25574863de28ae07a1d64e4bdcbbf4 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -11824,24 +11824,8 @@ impl Editor { editor_snapshot: &EditorSnapshot, cx: &mut ViewContext, ) -> Option> { - let text_layout_details = self.text_layout_details(cx); - let line_height = text_layout_details - .editor_style - .text - .line_height_in_pixels(cx.rem_size()); let source_point = source.to_display_point(editor_snapshot); - let first_visible_line = text_layout_details - .scroll_anchor - .anchor - .to_display_point(editor_snapshot); - if first_visible_line > source_point { - return None; - } - let source_x = editor_snapshot.x_for_display_point(source_point, &text_layout_details); - let source_y = line_height - * ((source_point.row() - first_visible_line.row()).0 as f32 - - text_layout_details.scroll_anchor.offset.y); - Some(gpui::Point::new(source_x, source_y)) + self.display_to_pixel_point(source_point, editor_snapshot, cx) } pub fn display_to_pixel_point( @@ -11852,15 +11836,16 @@ impl Editor { ) -> Option> { let line_height = self.style()?.text.line_height_in_pixels(cx.rem_size()); let text_layout_details = self.text_layout_details(cx); - let first_visible_line = text_layout_details + let scroll_top = text_layout_details .scroll_anchor - .anchor - .to_display_point(editor_snapshot); - if first_visible_line > source { + .scroll_position(editor_snapshot) + .y; + + if source.row().as_f32() < scroll_top.floor() { return None; } let source_x = editor_snapshot.x_for_display_point(source, &text_layout_details); - let source_y = line_height * (source.row() - first_visible_line.row()).0 as f32; + let source_y = line_height * (source.row().as_f32() - scroll_top); Some(gpui::Point::new(source_x, source_y)) } } diff --git a/crates/editor/src/mouse_context_menu.rs b/crates/editor/src/mouse_context_menu.rs index 8b3f0cafc5e7349a2c45e20511ff8dcf069f08d8..8428cb89b6e750fcccf142b2a68531adcca6c3f5 100644 --- a/crates/editor/src/mouse_context_menu.rs +++ b/crates/editor/src/mouse_context_menu.rs @@ -10,6 +10,7 @@ use gpui::prelude::FluentBuilder; use gpui::{DismissEvent, Pixels, Point, Subscription, View, ViewContext}; use workspace::OpenInTerminal; +#[derive(Debug)] pub enum MenuPosition { /// When the editor is scrolled, the context menu stays on the exact /// same position on the screen, never disappearing. @@ -29,6 +30,15 @@ pub struct MouseContextMenu { _subscription: Subscription, } +impl std::fmt::Debug for MouseContextMenu { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("MouseContextMenu") + .field("position", &self.position) + .field("context_menu", &self.context_menu) + .finish() + } +} + impl MouseContextMenu { pub(crate) fn pinned_to_editor( editor: &mut Editor,