From 0ce914b57aaa982db2f89e3d25acdfaae4401883 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 27 Feb 2025 20:30:56 -0500 Subject: [PATCH] fix(tooltip): mouse interaction --- src/widget/rectangle_tracker/mod.rs | 6 ++--- src/widget/wayland/tooltip/widget.rs | 40 ++++++++++++++-------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/widget/rectangle_tracker/mod.rs b/src/widget/rectangle_tracker/mod.rs index 876b1255..3e7753e9 100644 --- a/src/widget/rectangle_tracker/mod.rs +++ b/src/widget/rectangle_tracker/mod.rs @@ -209,7 +209,7 @@ where renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { - let layout = self.container.layout( + self.container.layout( tree, renderer, if self.ignore_bounds { @@ -217,9 +217,7 @@ where } else { limits }, - ); - - layout + ) } fn operate( diff --git a/src/widget/wayland/tooltip/widget.rs b/src/widget/wayland/tooltip/widget.rs index ba7f8c5a..7897a344 100644 --- a/src/widget/wayland/tooltip/widget.rs +++ b/src/widget/wayland/tooltip/widget.rs @@ -224,30 +224,26 @@ impl<'a, Message: 'a + Clone> Widget shell: &mut Shell<'_, Message>, viewport: &Rectangle, ) -> event::Status { - if self.content.as_widget_mut().on_event( - &mut tree.children[0], - event.clone(), - layout.children().next().unwrap(), - cursor, - renderer, - clipboard, - shell, - viewport, - ) == event::Status::Captured - { - return event::Status::Captured; - } - - update( + let status = update( self.id.clone(), - event, + event.clone(), layout, cursor, shell, &self.on_hover, &self.on_leave, || tree.state.downcast_mut::(), - ) + ); + status.merge(self.content.as_widget_mut().on_event( + &mut tree.children[0], + event, + layout.children().next().unwrap(), + cursor, + renderer, + clipboard, + shell, + viewport, + )) } #[allow(clippy::too_many_lines)] @@ -304,9 +300,13 @@ impl<'a, Message: 'a + Clone> Widget viewport: &Rectangle, renderer: &crate::Renderer, ) -> mouse::Interaction { - self.content - .as_widget() - .mouse_interaction(tree, layout, cursor, viewport, renderer) + self.content.as_widget().mouse_interaction( + &tree.children[0], + layout, + cursor, + viewport, + renderer, + ) } fn overlay<'b>(