summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-09-13 23:45:30 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-09-13 23:45:30 +0200
commitcdf02ddda95a900215de8a9fa1681130795991bc (patch)
treed0bb0f8c73aebac56312f2c30b82ce7e15949e1e
parent0d298b70d23663b6e230b41818442b4f1a91f14c (diff)
downloadiced-cdf02ddda95a900215de8a9fa1681130795991bc.tar.gz
iced-cdf02ddda95a900215de8a9fa1681130795991bc.tar.bz2
iced-cdf02ddda95a900215de8a9fa1681130795991bc.zip
Enable `slider` scrolling only when `Ctrl` is pressed
-rw-r--r--widget/src/slider.rs34
-rw-r--r--widget/src/vertical_slider.rs34
2 files changed, 36 insertions, 32 deletions
diff --git a/widget/src/slider.rs b/widget/src/slider.rs
index 130c9bf3..5d0a363a 100644
--- a/widget/src/slider.rs
+++ b/widget/src/slider.rs
@@ -288,22 +288,6 @@ 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) =
@@ -340,6 +324,24 @@ where
return event::Status::Captured;
}
}
+ Event::Mouse(mouse::Event::WheelScrolled { delta })
+ if state.keyboard_modifiers.control() =>
+ {
+ 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::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
if cursor.position_over(layout.bounds()).is_some() {
match key {
diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs
index 5a3519f4..f8f4b4a3 100644
--- a/widget/src/vertical_slider.rs
+++ b/widget/src/vertical_slider.rs
@@ -291,22 +291,6 @@ 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) =
@@ -345,6 +329,24 @@ where
return event::Status::Captured;
}
}
+ Event::Mouse(mouse::Event::WheelScrolled { delta })
+ if state.keyboard_modifiers.control() =>
+ {
+ 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::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
if cursor.position_over(layout.bounds()).is_some() {
match key {