summaryrefslogtreecommitdiff
path: root/gtk/gtkrange.c
diff options
context:
space:
mode:
authorDaniel Boles <dboles@src.gnome.org>2018-01-01 14:28:16 +0000
committerDaniel Boles <dboles.src@gmail.com>2018-04-18 18:36:55 +0100
commit6985dde3206fe0562ea7adbe18ae9acd77bff6a4 (patch)
tree422f4d35524cb258df39c652788ff5c946143a86 /gtk/gtkrange.c
parentbc2a38a59e7e504612dda668ea2d9ed16dc03c5e (diff)
downloadgtk+-6985dde3206fe0562ea7adbe18ae9acd77bff6a4.tar.gz
Range: Use should_invert_move() to scroll value
This fixes RTL and/or :inverted Ranges responding to a horizontal scroll by moving the value/slider button in the opposite direction... See prev. https://bugzilla.gnome.org/show_bug.cgi?id=791802
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r--gtk/gtkrange.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 29082d06e9..f064a1d99f 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -2246,6 +2246,7 @@ gtk_range_scroll_controller_scroll (GtkEventControllerScroll *scroll,
GtkRangePrivate *priv = gtk_range_get_instance_private (range);
gdouble scroll_unit, delta;
gboolean handled;
+ GtkOrientation move_orientation;
#ifdef GDK_WINDOWING_QUARTZ
scroll_unit = 1;
@@ -2253,12 +2254,18 @@ gtk_range_scroll_controller_scroll (GtkEventControllerScroll *scroll,
scroll_unit = gtk_adjustment_get_page_increment (priv->adjustment);
#endif
- if (gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL)
- delta = (dx ? dx : -dy) * scroll_unit;
+ if (priv->orientation == GTK_ORIENTATION_HORIZONTAL && dx != 0)
+ {
+ move_orientation = GTK_ORIENTATION_HORIZONTAL;
+ delta = dx * scroll_unit;
+ }
else
- delta = dy * scroll_unit;
+ {
+ move_orientation = GTK_ORIENTATION_VERTICAL;
+ delta = dy * scroll_unit;
+ }
- if (priv->inverted)
+ if (delta != 0 && should_invert_move (range, move_orientation))
delta = - delta;
g_signal_emit (range, signals[CHANGE_VALUE], 0,