diff options
author | 2019-11-11 20:29:58 -0800 | |
---|---|---|
committer | 2020-03-18 11:26:53 -0700 | |
commit | e19a07d40049f40f36d879a498fab4ce63778b27 (patch) | |
tree | 6ecdcb5345f6c00c2b53ee4d93afd8585c1dda2e /native/src/widget/button.rs | |
parent | 9da6ce474c2cd178ca5365d46760ba0882ce7121 (diff) | |
download | iced-e19a07d40049f40f36d879a498fab4ce63778b27.tar.gz iced-e19a07d40049f40f36d879a498fab4ce63778b27.tar.bz2 iced-e19a07d40049f40f36d879a498fab4ce63778b27.zip |
Added initial touch events to support iOS
Diffstat (limited to 'native/src/widget/button.rs')
-rw-r--r-- | native/src/widget/button.rs | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index f1d46936..8c397bc1 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -5,7 +5,7 @@ //! [`Button`]: struct.Button.html //! [`State`]: struct.State.html use crate::{ - input::{mouse, ButtonState}, + input::{mouse, touch::Touch, ButtonState}, layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, Rectangle, Widget, }; @@ -187,26 +187,27 @@ where match event { Event::Mouse(mouse::Event::Input { button: mouse::Button::Left, - state, - }) => { + state: ButtonState::Pressed, + }) + | Event::Touch(Touch::Started { .. }) => { + let bounds = layout.bounds(); + + self.state.is_pressed = bounds.contains(cursor_position); + } + Event::Mouse(mouse::Event::Input { + button: mouse::Button::Left, + state: ButtonState::Released, + }) + | Event::Touch(Touch::Ended { .. }) => { if let Some(on_press) = self.on_press.clone() { let bounds = layout.bounds(); + let is_clicked = self.state.is_pressed + && bounds.contains(cursor_position); - 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); - - self.state.is_pressed = false; + self.state.is_pressed = false; - if is_clicked { - messages.push(on_press); - } - } + if is_clicked { + messages.push(on_press); } } } |