diff options
| author | 2024-05-13 21:16:19 -0500 | |
|---|---|---|
| committer | 2024-09-08 19:03:31 +0200 | |
| commit | 0a0ea30059b86ca70951aff535c078c1c4b2af0e (patch) | |
| tree | b28c251289bf65a553a76a4abbb0e51cabbb6b4e /widget | |
| parent | c8686c5173a93454f3fe1e6c287d312a9b9f13c5 (diff) | |
| download | iced-0a0ea30059b86ca70951aff535c078c1c4b2af0e.tar.gz iced-0a0ea30059b86ca70951aff535c078c1c4b2af0e.tar.bz2 iced-0a0ea30059b86ca70951aff535c078c1c4b2af0e.zip  | |
Enable horizontal scrolling without shift modifier
Fixes #2359.
Diffstat (limited to '')
| -rw-r--r-- | widget/src/scrollable.rs | 26 | 
1 files changed, 20 insertions, 6 deletions
diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs index 47953741..c2089340 100644 --- a/widget/src/scrollable.rs +++ b/widget/src/scrollable.rs @@ -706,15 +706,29 @@ where                  let delta = match delta {                      mouse::ScrollDelta::Lines { x, y } => { -                        // TODO: Configurable speed/friction (?) -                        let movement = if !cfg!(target_os = "macos") // macOS automatically inverts the axes when Shift is pressed -                            && state.keyboard_modifiers.shift() -                        { -                            Vector::new(y, x) -                        } else { +                        let is_shift_pressed = state.keyboard_modifiers.shift(); + +                        // macOS automatically inverts the axes when Shift is pressed +                        let (x, y) = +                            if cfg!(target_os = "macos") && is_shift_pressed { +                                (y, x) +                            } else { +                                (x, y) +                            }; + +                        let is_vertical = match self.direction { +                            Direction::Vertical(_) => true, +                            Direction::Horizontal(_) => false, +                            Direction::Both { .. } => !is_shift_pressed, +                        }; + +                        let movement = if is_vertical {                              Vector::new(x, y) +                        } else { +                            Vector::new(y, x)                          }; +                        // TODO: Configurable speed/friction (?)                          movement * 60.0                      }                      mouse::ScrollDelta::Pixels { x, y } => Vector::new(x, y),  | 
