range: Stop tracking mouse position

We have the mouse position available everywhere we want to use it
anyway, so use that instead.
This commit is contained in:
Timm Bäder
2018-02-20 10:31:20 +01:00
parent e9ecfeaca6
commit ece26b847b

View File

@@ -75,9 +75,6 @@ typedef struct _GtkRangeStepTimer GtkRangeStepTimer;
struct _GtkRangePrivate
{
/* last mouse coords we got, or G_MININT if mouse is outside the range */
gint mouse_x;
gint mouse_y;
GtkWidget *grab_location; /* "grabbed" mouse location, NULL for no grab */
GtkRangeStepTimer *timer;
@@ -195,11 +192,9 @@ static void gtk_range_long_press_gesture_pressed (GtkGestureLongPress *gesture
GtkRange *range);
static gboolean gtk_range_event (GtkWidget *widget,
GdkEvent *event);
static void update_slider_position (GtkRange *range,
gint mouse_x,
gint mouse_y);
int mouse_x,
int mouse_y);
static void stop_scrolling (GtkRange *range);
static void add_autoscroll (GtkRange *range);
static void remove_autoscroll (GtkRange *range);
@@ -286,7 +281,6 @@ gtk_range_class_init (GtkRangeClass *class)
widget_class->snapshot = gtk_range_snapshot;
widget_class->size_allocate = gtk_range_size_allocate;
widget_class->unmap = gtk_range_unmap;
widget_class->event = gtk_range_event;
widget_class->key_press_event = gtk_range_key_press;
widget_class->direction_changed = gtk_range_direction_changed;
@@ -551,8 +545,6 @@ gtk_range_init (GtkRange *range)
priv->inverted = FALSE;
priv->flippable = FALSE;
priv->round_digits = -1;
priv->mouse_x = G_MININT;
priv->mouse_y = G_MININT;
priv->has_origin = FALSE;
priv->show_fill_level = FALSE;
priv->restrict_to_fill_level = TRUE;
@@ -1923,9 +1915,6 @@ gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
source_device = gdk_event_get_source_device ((GdkEvent *) event);
source = gdk_device_get_source (source_device);
priv->mouse_x = x;
priv->mouse_y = y;
gtk_widget_get_outer_allocation (priv->slider_widget, &slider_alloc);
g_object_get (gtk_widget_get_settings (widget),
@@ -2041,9 +2030,7 @@ gtk_range_multipress_gesture_released (GtkGestureMultiPress *gesture,
{
GtkRangePrivate *priv = range->priv;
priv->mouse_x = x;
priv->mouse_y = y;
range->priv->in_drag = FALSE;
priv->in_drag = FALSE;
stop_scrolling (range);
}
@@ -2262,7 +2249,9 @@ gtk_range_scroll_controller_scroll (GtkEventControllerScroll *scroll,
}
static void
update_autoscroll_mode (GtkRange *range)
update_autoscroll_mode (GtkRange *range,
int mouse_x,
int mouse_y)
{
GtkScrollType mode = GTK_SCROLL_NONE;
@@ -2277,12 +2266,12 @@ update_autoscroll_mode (GtkRange *range)
if (range->priv->orientation == GTK_ORIENTATION_VERTICAL)
{
size = height;
pos = range->priv->mouse_y;
pos = mouse_y;
}
else
{
size = width;
pos = range->priv->mouse_x;
pos = mouse_x;
}
if (pos < SCROLL_EDGE_SIZE)
@@ -2310,14 +2299,16 @@ gtk_range_drag_gesture_update (GtkGestureDrag *gesture,
if (priv->grab_location == priv->slider_widget)
{
int mouse_x, mouse_y;
gtk_gesture_drag_get_start_point (gesture, &start_x, &start_y);
priv->mouse_x = start_x + offset_x;
priv->mouse_y = start_y + offset_y;
mouse_x = start_x + offset_x;
mouse_y = start_y + offset_y;
priv->in_drag = TRUE;
update_autoscroll_mode (range);
update_autoscroll_mode (range, mouse_x, mouse_y);
if (priv->autoscroll_mode == GTK_SCROLL_NONE)
update_slider_position (range, priv->mouse_x, priv->mouse_y);
update_slider_position (range, mouse_x, mouse_y);
}
}
@@ -2333,28 +2324,6 @@ gtk_range_drag_gesture_begin (GtkGestureDrag *gesture,
gtk_gesture_set_state (priv->drag_gesture, GTK_EVENT_SEQUENCE_CLAIMED);
}
static gboolean
gtk_range_event (GtkWidget *widget,
GdkEvent *event)
{
GtkRange *range = GTK_RANGE (widget);
GtkRangePrivate *priv = range->priv;
gdouble x, y;
if (gdk_event_get_event_type (event) == GDK_LEAVE_NOTIFY)
{
priv->mouse_x = G_MININT;
priv->mouse_y = G_MININT;
}
else if (gdk_event_get_coords (event, &x, &y))
{
priv->mouse_x = x;
priv->mouse_y = y;
}
return GDK_EVENT_PROPAGATE;
}
static void
gtk_range_adjustment_changed (GtkAdjustment *adjustment,
gpointer data)