diff options
author | 2024-09-13 23:45:30 +0200 | |
---|---|---|
committer | 2024-09-13 23:45:30 +0200 | |
commit | cdf02ddda95a900215de8a9fa1681130795991bc (patch) | |
tree | d0bb0f8c73aebac56312f2c30b82ce7e15949e1e | |
parent | 0d298b70d23663b6e230b41818442b4f1a91f14c (diff) | |
download | iced-cdf02ddda95a900215de8a9fa1681130795991bc.tar.gz iced-cdf02ddda95a900215de8a9fa1681130795991bc.tar.bz2 iced-cdf02ddda95a900215de8a9fa1681130795991bc.zip |
Enable `slider` scrolling only when `Ctrl` is pressed
-rw-r--r-- | widget/src/slider.rs | 34 | ||||
-rw-r--r-- | widget/src/vertical_slider.rs | 34 |
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 { |