diff options
author | 2024-09-02 09:03:48 -0400 | |
---|---|---|
committer | 2024-09-02 09:03:48 -0400 | |
commit | 0d298b70d23663b6e230b41818442b4f1a91f14c (patch) | |
tree | 84db2b614b40b5a42af3f4b932779d40a002890f | |
parent | 9957481d416f948f6af228013caa221a877c4db4 (diff) | |
download | iced-0d298b70d23663b6e230b41818442b4f1a91f14c.tar.gz iced-0d298b70d23663b6e230b41818442b4f1a91f14c.tar.bz2 iced-0d298b70d23663b6e230b41818442b4f1a91f14c.zip |
slider: handle mouse wheel events
-rw-r--r-- | widget/src/slider.rs | 16 | ||||
-rw-r--r-- | widget/src/vertical_slider.rs | 16 |
2 files changed, 32 insertions, 0 deletions
diff --git a/widget/src/slider.rs b/widget/src/slider.rs index e586684a..130c9bf3 100644 --- a/widget/src/slider.rs +++ b/widget/src/slider.rs @@ -288,6 +288,22 @@ where }; match event { + Event::Mouse(mouse::Event::WheelScrolled { delta }) => { + if let Some(_) = cursor.position_over(layout.bounds()) { + let delta = match delta { + mouse::ScrollDelta::Lines { x: _, y } => y, + mouse::ScrollDelta::Pixels { x: _, y } => y, + }; + + if delta < 0.0 { + let _ = decrement(current_value).map(change); + } else { + let _ = increment(current_value).map(change); + } + + return event::Status::Captured; + } + } Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) | Event::Touch(touch::Event::FingerPressed { .. }) => { if let Some(cursor_position) = diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs index f21b996c..5a3519f4 100644 --- a/widget/src/vertical_slider.rs +++ b/widget/src/vertical_slider.rs @@ -291,6 +291,22 @@ where }; match event { + Event::Mouse(mouse::Event::WheelScrolled { delta }) => { + if let Some(_) = cursor.position_over(layout.bounds()) { + let delta = match delta { + mouse::ScrollDelta::Lines { x: _, y } => y, + mouse::ScrollDelta::Pixels { x: _, y } => y, + }; + + if delta < 0.0 { + let _ = decrement(current_value).map(change); + } else { + let _ = increment(current_value).map(change); + } + + return event::Status::Captured; + } + } Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) | Event::Touch(touch::Event::FingerPressed { .. }) => { if let Some(cursor_position) = |