summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kiëd Llaentenn <kiedtl@tilde.team>2024-09-02 09:03:48 -0400
committerLibravatar Kiëd Llaentenn <kiedtl@tilde.team>2024-09-02 09:03:48 -0400
commit0d298b70d23663b6e230b41818442b4f1a91f14c (patch)
tree84db2b614b40b5a42af3f4b932779d40a002890f
parent9957481d416f948f6af228013caa221a877c4db4 (diff)
downloadiced-0d298b70d23663b6e230b41818442b4f1a91f14c.tar.gz
iced-0d298b70d23663b6e230b41818442b4f1a91f14c.tar.bz2
iced-0d298b70d23663b6e230b41818442b4f1a91f14c.zip
slider: handle mouse wheel events
-rw-r--r--widget/src/slider.rs16
-rw-r--r--widget/src/vertical_slider.rs16
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) =