Skip to content

Commit f3b51e4

Browse files
authored
Merge pull request #2565 from kiedtl/slider_mouse_wheel
slider: handle mouse wheel events
2 parents 0c50280 + 83041f6 commit f3b51e4

2 files changed

Lines changed: 38 additions & 2 deletions

File tree

widget/src/slider.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,26 @@ where
324324
return event::Status::Captured;
325325
}
326326
}
327+
Event::Mouse(mouse::Event::WheelScrolled { delta })
328+
if state.keyboard_modifiers.control() =>
329+
{
330+
if cursor.is_over(layout.bounds()) {
331+
let delta = match delta {
332+
mouse::ScrollDelta::Lines { x: _, y } => y,
333+
mouse::ScrollDelta::Pixels { x: _, y } => y,
334+
};
335+
336+
if delta < 0.0 {
337+
let _ = decrement(current_value).map(change);
338+
} else {
339+
let _ = increment(current_value).map(change);
340+
}
341+
342+
return event::Status::Captured;
343+
}
344+
}
327345
Event::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
328-
if cursor.position_over(layout.bounds()).is_some() {
346+
if cursor.is_over(layout.bounds()) {
329347
match key {
330348
Key::Named(key::Named::ArrowUp) => {
331349
let _ = increment(current_value).map(change);

widget/src/vertical_slider.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,26 @@ where
329329
return event::Status::Captured;
330330
}
331331
}
332+
Event::Mouse(mouse::Event::WheelScrolled { delta })
333+
if state.keyboard_modifiers.control() =>
334+
{
335+
if cursor.is_over(layout.bounds()) {
336+
let delta = match delta {
337+
mouse::ScrollDelta::Lines { x: _, y } => y,
338+
mouse::ScrollDelta::Pixels { x: _, y } => y,
339+
};
340+
341+
if delta < 0.0 {
342+
let _ = decrement(current_value).map(change);
343+
} else {
344+
let _ = increment(current_value).map(change);
345+
}
346+
347+
return event::Status::Captured;
348+
}
349+
}
332350
Event::Keyboard(keyboard::Event::KeyPressed { key, .. }) => {
333-
if cursor.position_over(layout.bounds()).is_some() {
351+
if cursor.is_over(layout.bounds()) {
334352
match key {
335353
Key::Named(key::Named::ArrowUp) => {
336354
let _ = increment(current_value).map(change);

0 commit comments

Comments
 (0)