diff --git a/crates/gpui2/src/elements/div.rs b/crates/gpui2/src/elements/div.rs index bc7497319aabb6cdbc94b72ecf50bd5728df491a..acaf166fc000ca028154d936d48eff9a2fd5c2d8 100644 --- a/crates/gpui2/src/elements/div.rs +++ b/crates/gpui2/src/elements/div.rs @@ -118,7 +118,6 @@ impl Div { }) } - let bounds = layout.bounds; let pressed = Cell::new(hovered && cx.is_mouse_down(MouseButton::Left)); cx.on_event(layout.order, move |_, event: &MouseButtonEvent, _| { if bounds.contains_point(event.position) { diff --git a/crates/gpui2/src/elements/hoverable.rs b/crates/gpui2/src/elements/hoverable.rs index 689df16daf171a724347f0f7a6d414dab9f3dab0..89a8b663ee8bc112ab95a77e395da4b08790589c 100644 --- a/crates/gpui2/src/elements/hoverable.rs +++ b/crates/gpui2/src/elements/hoverable.rs @@ -63,15 +63,14 @@ impl + Styleable> Element for Hoverable { ) where Self: Sized, { - self.hovered - .set(layout.bounds.contains_point(cx.mouse_position())); + let bounds = layout.bounds + parent_origin; + self.hovered.set(bounds.contains_point(cx.mouse_position())); let slot = self.cascade_slot; let style = self.hovered.get().then_some(self.hovered_style.clone()); self.style_cascade().set(slot, style); let hovered = self.hovered.clone(); - let bounds = layout.bounds; cx.on_event(layout.order, move |_view, _: &MouseMovedEvent, cx| { cx.bubble_event(); if bounds.contains_point(cx.mouse_position()) != hovered.get() { diff --git a/crates/gpui2/src/elements/pressable.rs b/crates/gpui2/src/elements/pressable.rs index a9d332e6c843c0e47ab51ff8acabffd983b9ef21..db6652fad5e5dc3212c38b18394db212eee9d0ad 100644 --- a/crates/gpui2/src/elements/pressable.rs +++ b/crates/gpui2/src/elements/pressable.rs @@ -68,7 +68,7 @@ impl + Styleable> Element for Pressable { self.style_cascade().set(slot, style); let pressed = self.pressed.clone(); - let bounds = layout.bounds; + let bounds = layout.bounds + parent_origin; cx.on_event(layout.order, move |_view, event: &MouseButtonEvent, cx| { if event.is_down { if bounds.contains_point(event.position) {