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());          }      }  | 
