Avoid returning on mouse enter in MouseListener
The event that triggers a mouse enter could be a mouse button press/release.
This commit is contained in:
parent
f247528725
commit
29971c9d71
1 changed files with 10 additions and 14 deletions
|
|
@ -86,7 +86,7 @@ impl<'a, Message, Renderer> MouseListener<'a, Message, Renderer> {
|
||||||
/// Local state of the [`MouseListener`].
|
/// Local state of the [`MouseListener`].
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct State {
|
struct State {
|
||||||
hovered: bool,
|
is_hovered: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message, Renderer> MouseListener<'a, Message, Renderer> {
|
impl<'a, Message, Renderer> MouseListener<'a, Message, Renderer> {
|
||||||
|
|
@ -266,27 +266,23 @@ fn update<Message: Clone, Renderer>(
|
||||||
shell: &mut Shell<'_, Message>,
|
shell: &mut Shell<'_, Message>,
|
||||||
state: &mut State,
|
state: &mut State,
|
||||||
) -> event::Status {
|
) -> event::Status {
|
||||||
let hovered = state.hovered;
|
let was_hovered = state.is_hovered;
|
||||||
|
|
||||||
if !layout.bounds().contains(cursor_position) {
|
state.is_hovered = layout.bounds().contains(cursor_position);
|
||||||
if hovered {
|
|
||||||
state.hovered = false;
|
|
||||||
|
|
||||||
if let Some(message) = widget.on_mouse_exit.clone() {
|
if !state.is_hovered {
|
||||||
shell.publish(message);
|
if was_hovered {
|
||||||
|
if let Some(message) = widget.on_mouse_exit.as_ref() {
|
||||||
|
shell.publish(message.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return event::Status::Ignored;
|
return event::Status::Ignored;
|
||||||
}
|
}
|
||||||
|
|
||||||
state.hovered = true;
|
if !was_hovered {
|
||||||
|
if let Some(message) = widget.on_mouse_enter.as_ref() {
|
||||||
if !hovered {
|
shell.publish(message.clone());
|
||||||
if let Some(message) = widget.on_mouse_enter.clone() {
|
|
||||||
shell.publish(message);
|
|
||||||
|
|
||||||
return event::Status::Ignored;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue