summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--native/src/widget/mouse_listener.rs24
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());
}
}