[gtk: 1/2] gtkscrolledwindow: Consider shift key presses when decelerating



commit 14b21d78db1c236ebf958fcc8fa4446ac2bb1149
Author: Sebastian Keller <sebastian-keller gmx de>
Date:   Sat Aug 4 16:24:33 2018 +0200

    gtkscrolledwindow: Consider shift key presses when decelerating
    
    Otherwise horizontal scrolling using the shift key would decelerate
    vertically.
    
    Fixes https://gitlab.gnome.org/GNOME/gtk/issues/770

 gtk/gtkscrolledwindow.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 90d7b2fdfe..68e048c929 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1341,12 +1341,29 @@ scroll_controller_decelerate (GtkEventControllerScroll *scroll,
                               GtkScrolledWindow        *scrolled_window)
 {
   gdouble unit_x, unit_y;
+  gboolean shifted;
+  GdkModifierType state;
+
+  if (!gtk_get_current_event_state (&state))
+    return;
+
+  shifted = (state & GDK_SHIFT_MASK) != 0;
 
   unit_x = get_scroll_unit (scrolled_window, GTK_ORIENTATION_HORIZONTAL);
   unit_y = get_scroll_unit (scrolled_window, GTK_ORIENTATION_VERTICAL);
-  gtk_scrolled_window_decelerate (scrolled_window,
-                                  initial_vel_x * unit_x,
-                                  initial_vel_y * unit_y);
+
+  if (shifted)
+    {
+      gtk_scrolled_window_decelerate (scrolled_window,
+                                      initial_vel_y * unit_x,
+                                      initial_vel_x * unit_y);
+    }
+  else
+    {
+      gtk_scrolled_window_decelerate (scrolled_window,
+                                      initial_vel_x * unit_x,
+                                      initial_vel_y * unit_y);
+    }
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]