From: Matthias Clasen Date: Sun, 21 Jun 2015 00:26:42 +0000 (-0400) Subject: GtkRange: Improve zoom handling a bit X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~24^2~9315 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=93f9a81ac5d1a4239ad1aef60a126446810ef1ab;p=gtk4.git GtkRange: Improve zoom handling a bit The calculation to update the initial slider position on zoom changes was not working correctly when using keys to toggle zoom on and off for scales. Avoid it by updating the position beforehand. --- diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 2f7cae5af6..edc0661751 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -2418,17 +2418,18 @@ gtk_range_key_press (GtkWidget *widget, { stop_scrolling (range); - update_slider_position (range, - priv->slide_initial_coordinate_delta + priv->slide_initial_slider_position, - priv->slide_initial_coordinate_delta + priv->slide_initial_slider_position); - return TRUE; } else if (priv->in_drag && (event->keyval == GDK_KEY_Shift_L || event->keyval == GDK_KEY_Shift_R)) { + if (priv->orientation == GTK_ORIENTATION_VERTICAL) + priv->slide_initial_slider_position = priv->slider.y; + else + priv->slide_initial_slider_position = priv->slider.x; update_zoom_state (range, !priv->zoom); + return TRUE; } @@ -2577,7 +2578,7 @@ gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture, if (priv->mouse_location != MOUSE_SLIDER) { gdouble slider_low_value, slider_high_value, new_value; - + slider_high_value = coord_to_value (range, priv->orientation == GTK_ORIENTATION_VERTICAL ? @@ -2606,9 +2607,7 @@ gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture, /* Shift-click in the slider = fine adjustment */ if (state_mask & GDK_SHIFT_MASK) - { - update_zoom_state (range, TRUE); - } + update_zoom_state (range, TRUE); slider = priv->slider; } @@ -2930,7 +2929,6 @@ gtk_range_drag_gesture_update (GtkGestureDrag *gesture, priv->mouse_x = start_x + offset_x; priv->mouse_y = start_y + offset_y; priv->in_drag = TRUE; - update_autoscroll_mode (range); if (priv->autoscroll_mode == GTK_SCROLL_NONE) @@ -2946,6 +2944,7 @@ gtk_range_drag_gesture_begin (GtkGestureDrag *gesture, { if (range->priv->grab_location == MOUSE_SLIDER) gtk_gesture_set_state (range->priv->drag_gesture, GTK_EVENT_SEQUENCE_CLAIMED); + } static void