diff options
author | 2020-04-30 04:53:15 +0200 | |
---|---|---|
committer | 2020-04-30 04:53:15 +0200 | |
commit | e55cd9652e7c7aea4dc2c6ccb83769246d1a808e (patch) | |
tree | 6383563bab65b5feed50873c447a40da929d90bf /native/src/widget/button.rs | |
parent | e139aae1439d362ada017a05c9554eaae0883888 (diff) | |
download | iced-e55cd9652e7c7aea4dc2c6ccb83769246d1a808e.tar.gz iced-e55cd9652e7c7aea4dc2c6ccb83769246d1a808e.tar.bz2 iced-e55cd9652e7c7aea4dc2c6ccb83769246d1a808e.zip |
Split `Input` mouse event by `ButtonState`
Diffstat (limited to 'native/src/widget/button.rs')
-rw-r--r-- | native/src/widget/button.rs | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 3cf4f780..5d414023 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -5,9 +5,8 @@ //! [`Button`]: struct.Button.html //! [`State`]: struct.State.html use crate::{ - input::{mouse, ButtonState}, - layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, - Rectangle, Widget, + input::mouse, layout, Clipboard, Element, Event, Hasher, Layout, Length, + Point, Rectangle, Widget, }; use std::hash::Hash; @@ -185,28 +184,24 @@ where _clipboard: Option<&dyn Clipboard>, ) { match event { - Event::Mouse(mouse::Event::Input { - button: mouse::Button::Left, - state, - }) => { + Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => { + if self.on_press.is_some() { + let bounds = layout.bounds(); + + self.state.is_pressed = bounds.contains(cursor_position); + } + } + Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) => { if let Some(on_press) = self.on_press.clone() { let bounds = layout.bounds(); - match state { - ButtonState::Pressed => { - self.state.is_pressed = - bounds.contains(cursor_position); - } - ButtonState::Released => { - let is_clicked = self.state.is_pressed - && bounds.contains(cursor_position); + let is_clicked = self.state.is_pressed + && bounds.contains(cursor_position); - self.state.is_pressed = false; + self.state.is_pressed = false; - if is_clicked { - messages.push(on_press); - } - } + if is_clicked { + messages.push(on_press); } } } |