From f5795ffc6fe3d2dfe9c6741b26cd663969edae5e Mon Sep 17 00:00:00 2001 From: K Simmons Date: Sat, 22 Oct 2022 21:58:14 -0700 Subject: [PATCH] roll back mouse position in mouse_state struct in favor of using the dragged element position --- crates/gpui/src/app.rs | 15 --------------- crates/gpui/src/app/test_app_context.rs | 1 - crates/gpui/src/elements/mouse_event_handler.rs | 4 ---- crates/gpui/src/presenter.rs | 3 --- crates/gpui/src/scene/mouse_region.rs | 5 ----- .../workspace/src/pane/dragged_item_receiver.rs | 11 ++++++++++- 6 files changed, 10 insertions(+), 29 deletions(-) diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index e7ce384f163b2b05a5c5a9f96e8c8abcb75d085c..3a2e850239285677d671910852dee63bd3b27756 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -3908,7 +3908,6 @@ pub struct RenderContext<'a, T: View> { pub(crate) window_id: usize, pub(crate) view_id: usize, pub(crate) view_type: PhantomData, - pub(crate) mouse_position: Vector2F, pub(crate) hovered_region_ids: HashSet, pub(crate) clicked_region_ids: Option<(HashSet, MouseButton)>, pub app: &'a mut MutableAppContext, @@ -3920,19 +3919,12 @@ pub struct RenderContext<'a, T: View> { #[derive(Clone, Default)] pub struct MouseState { hovered: bool, - mouse_position: Vector2F, clicked: Option, - accessed_mouse_position: bool, accessed_hovered: bool, accessed_clicked: bool, } impl MouseState { - pub fn mouse_position(&mut self) -> Vector2F { - self.accessed_mouse_position = true; - self.mouse_position - } - pub fn hovered(&mut self) -> bool { self.accessed_hovered = true; self.hovered @@ -3943,10 +3935,6 @@ impl MouseState { self.clicked } - pub fn accessed_mouse_position(&self) -> bool { - self.accessed_mouse_position - } - pub fn accessed_hovered(&self) -> bool { self.accessed_hovered } @@ -3964,7 +3952,6 @@ impl<'a, V: View> RenderContext<'a, V> { view_id: params.view_id, view_type: PhantomData, titlebar_height: params.titlebar_height, - mouse_position: params.mouse_position, hovered_region_ids: params.hovered_region_ids.clone(), clicked_region_ids: params.clicked_region_ids.clone(), refreshing: params.refreshing, @@ -3987,7 +3974,6 @@ impl<'a, V: View> RenderContext<'a, V> { pub fn mouse_state(&self, region_id: usize) -> MouseState { let region_id = MouseRegionId::new::(self.view_id, region_id); MouseState { - mouse_position: self.mouse_position.clone(), hovered: self.hovered_region_ids.contains(®ion_id), clicked: self.clicked_region_ids.as_ref().and_then(|(ids, button)| { if ids.contains(®ion_id) { @@ -3996,7 +3982,6 @@ impl<'a, V: View> RenderContext<'a, V> { None } }), - accessed_mouse_position: false, accessed_hovered: false, accessed_clicked: false, } diff --git a/crates/gpui/src/app/test_app_context.rs b/crates/gpui/src/app/test_app_context.rs index 0eebc6485d232f3e5153b508fb69bf27bdbd66c8..72f1f546fb8a32cb3c95fc932d2128fcbbc17cb7 100644 --- a/crates/gpui/src/app/test_app_context.rs +++ b/crates/gpui/src/app/test_app_context.rs @@ -186,7 +186,6 @@ impl TestAppContext { view_id: handle.id(), view_type: PhantomData, titlebar_height: 0., - mouse_position: Default::default(), hovered_region_ids: Default::default(), clicked_region_ids: None, refreshing: false, diff --git a/crates/gpui/src/elements/mouse_event_handler.rs b/crates/gpui/src/elements/mouse_event_handler.rs index 3548b1a38c3a895504a89f2d3d5fa87213f7298a..132a915f0b6f99313720b0b6e21ac134d862639f 100644 --- a/crates/gpui/src/elements/mouse_event_handler.rs +++ b/crates/gpui/src/elements/mouse_event_handler.rs @@ -21,7 +21,6 @@ pub struct MouseEventHandler { cursor_style: Option, handlers: HandlerSet, hoverable: bool, - notify_on_move: bool, notify_on_hover: bool, notify_on_click: bool, above: bool, @@ -39,7 +38,6 @@ impl MouseEventHandler { { let mut mouse_state = cx.mouse_state::(region_id); let child = render_child(&mut mouse_state, cx); - let notify_on_move = mouse_state.accessed_mouse_position(); let notify_on_hover = mouse_state.accessed_hovered(); let notify_on_click = mouse_state.accessed_clicked(); Self { @@ -47,7 +45,6 @@ impl MouseEventHandler { region_id, cursor_style: None, handlers: Default::default(), - notify_on_move, notify_on_hover, notify_on_click, hoverable: true, @@ -188,7 +185,6 @@ impl MouseEventHandler { self.handlers.clone(), ) .with_hoverable(self.hoverable) - .with_notify_on_move(self.notify_on_move) .with_notify_on_hover(self.notify_on_hover) .with_notify_on_click(self.notify_on_click), ); diff --git a/crates/gpui/src/presenter.rs b/crates/gpui/src/presenter.rs index b04dde7e063ae9dd4cc33aa2be7a45aadbc79cd2..f8c4482a06401128905248317dd339c9af8006b6 100644 --- a/crates/gpui/src/presenter.rs +++ b/crates/gpui/src/presenter.rs @@ -185,7 +185,6 @@ impl Presenter { asset_cache: &self.asset_cache, view_stack: Vec::new(), refreshing, - mouse_position: self.mouse_position.clone(), hovered_region_ids: self.hovered_region_ids.clone(), clicked_region_ids: self .clicked_button @@ -568,7 +567,6 @@ pub struct LayoutContext<'a> { pub window_size: Vector2F, titlebar_height: f32, appearance: Appearance, - mouse_position: Vector2F, hovered_region_ids: HashSet, clicked_region_ids: Option<(HashSet, MouseButton)>, } @@ -640,7 +638,6 @@ impl<'a> LayoutContext<'a> { view_id: handle.id(), view_type: PhantomData, titlebar_height: self.titlebar_height, - mouse_position: self.mouse_position.clone(), hovered_region_ids: self.hovered_region_ids.clone(), clicked_region_ids: self.clicked_region_ids.clone(), refreshing: self.refreshing, diff --git a/crates/gpui/src/scene/mouse_region.rs b/crates/gpui/src/scene/mouse_region.rs index f567fb7fe0a5ac50e006ec4c3c198405a83bd515..64c75153e4ee30ef02985ca4c450b6d8147566a6 100644 --- a/crates/gpui/src/scene/mouse_region.rs +++ b/crates/gpui/src/scene/mouse_region.rs @@ -138,11 +138,6 @@ impl MouseRegion { self } - pub fn with_notify_on_move(mut self, notify: bool) -> Self { - self.notify_on_move = notify; - self - } - pub fn with_notify_on_hover(mut self, notify: bool) -> Self { self.notify_on_hover = notify; self diff --git a/crates/workspace/src/pane/dragged_item_receiver.rs b/crates/workspace/src/pane/dragged_item_receiver.rs index afcb6b0fb9a086dfb5b09f1dab0af5aefb1b2c06..a3f1285e51303feb4961e522a4deb3a051ee6ae7 100644 --- a/crates/workspace/src/pane/dragged_item_receiver.rs +++ b/crates/workspace/src/pane/dragged_item_receiver.rs @@ -33,7 +33,7 @@ where .global::>() .currently_dragged::(cx.window_id()) .filter(|_| hovered) - .map(|_| state.mouse_position()); + .map(|(drag_position, _)| drag_position); Stack::new() .with_child(render_child(state, cx)) @@ -69,6 +69,15 @@ where cx.notify(); } }) + .on_move(|_, cx| { + if cx + .global::>() + .currently_dragged::(cx.window_id()) + .is_some() + { + cx.notify(); + } + }) } pub fn handle_dropped_item(