diff options
author | 2024-09-13 23:58:03 +0200 | |
---|---|---|
committer | 2024-09-13 23:58:03 +0200 | |
commit | f3b51e40f006bc7c6ee2d3560820c922081aa8b0 (patch) | |
tree | 354a24bcdd2e707d717309c4074f226cb2708e0d | |
parent | 0c502801e359706a182f01da1465c17b15fa6c67 (diff) | |
parent | 83041f6880a79fb1676fc1fd753474d189aa9b47 (diff) | |
download | iced-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.rs | 20 | ||||
-rw-r--r-- | widget/src/vertical_slider.rs | 20 |
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); |