summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-08-15 22:02:45 +0000
committerMatthias Clasen <mclasen@redhat.com>2018-08-15 22:02:45 +0000
commitc9f875bd770bf99ee61ba6b7098e5ca018925f82 (patch)
tree9a230173ed3e79519dd2ce6af60fc0a63dfd07bb
parent677627346d0fe14dc75a0f4fc5d4a734d24c6872 (diff)
parent5c6596ad99cf23a7e621b4752c7066571dce3bc2 (diff)
downloadgtk+-c9f875bd770bf99ee61ba6b7098e5ca018925f82.tar.gz
Merge branch 'fix-shifted-scrolling-gtk3' into 'gtk-3-24'
gtkscrolledwindow: Consider shift key presses when decelerating [gtk3] See merge request GNOME/gtk!287
-rw-r--r--gtk/gtkscrolledwindow.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 0d6b220952..cc7c439938 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1321,7 +1321,8 @@ get_scroll_unit (GtkScrolledWindow *sw,
static void
scroll_history_push (GtkScrolledWindow *sw,
- GdkEventScroll *event)
+ GdkEventScroll *event,
+ gboolean shifted)
{
GtkScrolledWindowPrivate *priv = sw->priv;
ScrollHistoryElem new_item;
@@ -1343,8 +1344,16 @@ scroll_history_push (GtkScrolledWindow *sw,
if (i > 0)
g_array_remove_range (priv->scroll_history, 0, i);
- new_item.dx = event->delta_x;
- new_item.dy = event->delta_y;
+ if (shifted)
+ {
+ new_item.dx = event->delta_y;
+ new_item.dy = event->delta_x;
+ }
+ else
+ {
+ new_item.dx = event->delta_x;
+ new_item.dy = event->delta_y;
+ }
new_item.evtime = event->time;
g_array_append_val (priv->scroll_history, new_item);
}
@@ -3481,7 +3490,7 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
scroll_history_reset (scrolled_window);
}
- scroll_history_push (scrolled_window, event);
+ scroll_history_push (scrolled_window, event, shifted);
if (input_source == GDK_SOURCE_TRACKPOINT ||
input_source == GDK_SOURCE_TOUCHPAD)