summaryrefslogtreecommitdiff
path: root/gtk/gtkrange.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@lanedo.com>2012-08-24 11:49:43 +0200
committerMichael Natterer <mitch@gimp.org>2012-09-11 11:19:09 +0200
commit64324a5da080bee7ca42cfe53dadea9a882a9e64 (patch)
tree70529ddd819d0c3d6643ed7ce52908571b65a442 /gtk/gtkrange.c
parent4519fb53fcb97360e3be01f5b72eb2d1dc895955 (diff)
downloadgtk+-64324a5da080bee7ca42cfe53dadea9a882a9e64.tar.gz
Implement gtk-primary-button-warps-slider GtkSetting
Make GtkRange honor the setting and implement it in the quartz backend, it proxies the "click in the scroll bar to" property from the OS X PrefPane.
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r--gtk/gtkrange.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 529a8d76a9..d18cf2bbac 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -2522,6 +2522,8 @@ gtk_range_button_press (GtkWidget *widget,
GtkRangePrivate *priv = range->priv;
GdkDevice *device, *source_device;
GdkInputSource source;
+ gboolean primary_warps;
+ gint page_increment_button, warp_button;
if (!gtk_widget_has_focus (widget))
gtk_widget_grab_focus (widget);
@@ -2540,6 +2542,20 @@ gtk_range_button_press (GtkWidget *widget,
if (gtk_range_update_mouse_location (range))
gtk_widget_queue_draw (widget);
+ g_object_get (gtk_widget_get_settings (widget),
+ "gtk-primary-button-warps-slider", &primary_warps,
+ NULL);
+ if (primary_warps)
+ {
+ warp_button = GDK_BUTTON_PRIMARY;
+ page_increment_button = GDK_BUTTON_SECONDARY;
+ }
+ else
+ {
+ warp_button = GDK_BUTTON_MIDDLE;
+ page_increment_button = GDK_BUTTON_PRIMARY;
+ }
+
if (priv->mouse_location == MOUSE_SLIDER &&
gdk_event_triggers_context_menu ((GdkEvent *)event))
{
@@ -2552,7 +2568,7 @@ gtk_range_button_press (GtkWidget *widget,
if (source != GDK_SOURCE_TOUCHSCREEN &&
priv->mouse_location == MOUSE_TROUGH &&
- event->button == GDK_BUTTON_SECONDARY)
+ event->button == page_increment_button)
{
/* button 2 steps by page increment, as with button 2 on a stepper
*/
@@ -2603,7 +2619,7 @@ gtk_range_button_press (GtkWidget *widget,
}
else if ((priv->mouse_location == MOUSE_TROUGH &&
(source == GDK_SOURCE_TOUCHSCREEN ||
- event->button == GDK_BUTTON_PRIMARY)) ||
+ event->button == warp_button)) ||
priv->mouse_location == MOUSE_SLIDER)
{
gboolean need_value_update = FALSE;