diff options
author | 2019-10-29 19:00:46 +0100 | |
---|---|---|
committer | 2019-10-29 19:00:46 +0100 | |
commit | bd5d871eb6630bc8f987d72c771032f878fb91b6 (patch) | |
tree | 528784f51a84abb0863590864a4af8f854d462e2 /native | |
parent | 29588f604af66fb4911f791c0c402fccd30ba64b (diff) | |
download | iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.tar.gz iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.tar.bz2 iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.zip |
Handle touchpad scroll events
Diffstat (limited to 'native')
-rw-r--r-- | native/src/input/mouse.rs | 2 | ||||
-rw-r--r-- | native/src/input/mouse/event.rs | 17 | ||||
-rw-r--r-- | native/src/widget/scrollable.rs | 15 |
3 files changed, 25 insertions, 9 deletions
diff --git a/native/src/input/mouse.rs b/native/src/input/mouse.rs index d37f5b96..69dc6b4c 100644 --- a/native/src/input/mouse.rs +++ b/native/src/input/mouse.rs @@ -3,4 +3,4 @@ mod button; mod event; pub use button::Button; -pub use event::Event; +pub use event::{Event, ScrollDelta}; diff --git a/native/src/input/mouse/event.rs b/native/src/input/mouse/event.rs index 7b68208f..478f9b4d 100644 --- a/native/src/input/mouse/event.rs +++ b/native/src/input/mouse/event.rs @@ -34,11 +34,22 @@ pub enum Event { }, /// The mouse wheel was scrolled. - WheelScrolled { + WheelScrolled { delta: ScrollDelta }, +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum ScrollDelta { + Lines { /// The number of horizontal lines scrolled - delta_x: f32, + x: f32, /// The number of vertical lines scrolled - delta_y: f32, + y: f32, + }, + Pixels { + /// The number of horizontal pixels scrolled + x: f32, + /// The number of vertical pixels scrolled + y: f32, }, } diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 76d12124..8a82be4f 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -64,11 +64,16 @@ where // TODO: Event capture. Nested scrollables should capture scroll events. if is_mouse_over { match event { - Event::Mouse(mouse::Event::WheelScrolled { - delta_y, .. - }) => { - // TODO: Configurable speed (?) - self.state.scroll(delta_y * 15.0, bounds, content_bounds); + Event::Mouse(mouse::Event::WheelScrolled { delta }) => { + match delta { + mouse::ScrollDelta::Lines { y, .. } => { + // TODO: Configurable speed (?) + self.state.scroll(y * 15.0, bounds, content_bounds); + } + mouse::ScrollDelta::Pixels { y, .. } => { + self.state.scroll(y, bounds, content_bounds); + } + } } _ => {} } |