diff options
Diffstat (limited to '')
-rw-r--r-- | native/src/widget/mouse_listener.rs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/native/src/widget/mouse_listener.rs b/native/src/widget/mouse_listener.rs index f9c3acac..a7a06bcc 100644 --- a/native/src/widget/mouse_listener.rs +++ b/native/src/widget/mouse_listener.rs @@ -86,7 +86,7 @@ impl<'a, Message, Renderer> MouseListener<'a, Message, Renderer> { /// Local state of the [`MouseListener`]. #[derive(Default)] struct State { - hovered: bool, + is_hovered: bool, } impl<'a, Message, Renderer> MouseListener<'a, Message, Renderer> { @@ -266,27 +266,23 @@ fn update<Message: Clone, Renderer>( shell: &mut Shell<'_, Message>, state: &mut State, ) -> event::Status { - let hovered = state.hovered; + let was_hovered = state.is_hovered; - if !layout.bounds().contains(cursor_position) { - if hovered { - state.hovered = false; + state.is_hovered = layout.bounds().contains(cursor_position); - if let Some(message) = widget.on_mouse_exit.clone() { - shell.publish(message); + if !state.is_hovered { + if was_hovered { + if let Some(message) = widget.on_mouse_exit.as_ref() { + shell.publish(message.clone()); } } return event::Status::Ignored; } - state.hovered = true; - - if !hovered { - if let Some(message) = widget.on_mouse_enter.clone() { - shell.publish(message); - - return event::Status::Ignored; + if !was_hovered { + if let Some(message) = widget.on_mouse_enter.as_ref() { + shell.publish(message.clone()); } } |