summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-09-13 23:58:03 +0200
committerLibravatar GitHub <noreply@github.com>2024-09-13 23:58:03 +0200
commitf3b51e40f006bc7c6ee2d3560820c922081aa8b0 (patch)
tree354a24bcdd2e707d717309c4074f226cb2708e0d
parent0c502801e359706a182f01da1465c17b15fa6c67 (diff)
parent83041f6880a79fb1676fc1fd753474d189aa9b47 (diff)
downloadiced-f3b51e40f006bc7c6ee2d3560820c922081aa8b0.tar.gz
iced-f3b51e40f006bc7c6ee2d3560820c922081aa8b0.tar.bz2
iced-f3b51e40f006bc7c6ee2d3560820c922081aa8b0.zip
Merge pull request #2565 from kiedtl/slider_mouse_wheel
slider: handle mouse wheel events
-rw-r--r--widget/src/slider.rs20
-rw-r--r--widget/src/vertical_slider.rs20
2 files changed, 38 insertions, 2 deletions
diff --git a/widget/src/slider.rs b/widget/src/slider.rs
index aebf68e2..15514afe 100644
--- a/widget/src/slider.rs
+++ b/widget/src/slider.rs
@@ -324,8 +324,26 @@ where
return event::Status::Captured;
}
}
+ Event::Mouse(mouse::Event::WheelScrolled { delta })
+ if state.keyboard_modifiers.control() =>
+ {
+ if cursor.is_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::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
- if cursor.position_over(layout.bounds()).is_some() {
+ if cursor.is_over(layout.bounds()) {
match key {
Key::Named(key::Named::ArrowUp) => {
let _ = increment(current_value).map(change);
diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs
index 03ec374c..a75ba49c 100644
--- a/widget/src/vertical_slider.rs
+++ b/widget/src/vertical_slider.rs
@@ -329,8 +329,26 @@ where
return event::Status::Captured;
}
}
+ Event::Mouse(mouse::Event::WheelScrolled { delta })
+ if state.keyboard_modifiers.control() =>
+ {
+ if cursor.is_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::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
- if cursor.position_over(layout.bounds()).is_some() {
+ if cursor.is_over(layout.bounds()) {
match key {
Key::Named(key::Named::ArrowUp) => {
let _ = increment(current_value).map(change);