range: Refactor a function

This is in preparation for more places that want to
queue_draw_location().
This commit is contained in:
Benjamin Otte 2014-11-29 01:39:09 +01:00
parent 909d0caa6b
commit 040c31a32c

View File

@ -287,7 +287,7 @@ static void gtk_range_adjustment_changed (GtkAdjustment *adjustme
static void gtk_range_add_step_timer (GtkRange *range, static void gtk_range_add_step_timer (GtkRange *range,
GtkScrollType step); GtkScrollType step);
static void gtk_range_remove_step_timer (GtkRange *range); static void gtk_range_remove_step_timer (GtkRange *range);
static GdkRectangle* get_area (GtkRange *range, static void gtk_range_queue_draw_location (GtkRange *range,
MouseLocation location); MouseLocation location);
static gboolean gtk_range_real_change_value (GtkRange *range, static gboolean gtk_range_real_change_value (GtkRange *range,
GtkScrollType scroll, GtkScrollType scroll,
@ -2535,20 +2535,11 @@ gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
button == GDK_BUTTON_MIDDLE || button == GDK_BUTTON_MIDDLE ||
button == GDK_BUTTON_SECONDARY)) button == GDK_BUTTON_SECONDARY))
{ {
GtkAllocation allocation;
GdkRectangle *stepper_area;
GtkScrollType scroll; GtkScrollType scroll;
range_grab_add (range, priv->mouse_location); range_grab_add (range, priv->mouse_location);
gtk_widget_get_allocation (widget, &allocation); gtk_range_queue_draw_location (range, priv->mouse_location);
stepper_area = get_area (range, priv->mouse_location);
gtk_widget_queue_draw_area (widget,
allocation.x + stepper_area->x,
allocation.y + stepper_area->y,
stepper_area->width,
stepper_area->height);
scroll = range_get_scroll_for_grab (range); scroll = range_get_scroll_for_grab (range);
if (scroll != GTK_SCROLL_NONE) if (scroll != GTK_SCROLL_NONE)
@ -3939,33 +3930,52 @@ gtk_range_calc_layout (GtkRange *range)
} }
} }
static GdkRectangle* static void
get_area (GtkRange *range, gtk_range_queue_draw_location (GtkRange *range,
MouseLocation location) MouseLocation location)
{ {
GtkRangePrivate *priv = range->priv; GtkRangePrivate *priv = range->priv;
GtkWidget *widget = GTK_WIDGET (range);
const GdkRectangle *rect;
GdkRectangle allocation;
switch (location) switch (location)
{ {
case MOUSE_STEPPER_A: case MOUSE_STEPPER_A:
return &priv->stepper_a; rect = &priv->stepper_a;
break;
case MOUSE_STEPPER_B: case MOUSE_STEPPER_B:
return &priv->stepper_b; rect = &priv->stepper_b;
break;
case MOUSE_STEPPER_C: case MOUSE_STEPPER_C:
return &priv->stepper_c; rect = &priv->stepper_c;
break;
case MOUSE_STEPPER_D: case MOUSE_STEPPER_D:
return &priv->stepper_d; rect = &priv->stepper_d;
break;
case MOUSE_TROUGH: case MOUSE_TROUGH:
return &priv->trough; rect = &priv->trough;
break;
case MOUSE_SLIDER: case MOUSE_SLIDER:
return &priv->slider; rect = &priv->slider;
break;
case MOUSE_WIDGET: case MOUSE_WIDGET:
case MOUSE_OUTSIDE: case MOUSE_OUTSIDE:
break; return;
default:
g_assert_not_reached ();
return;
} }
g_warning (G_STRLOC": bug"); if (rect->width <= 0 || rect->height <= 0)
return NULL; return;
gtk_widget_get_allocation (widget, &allocation);
gtk_widget_queue_draw_area (widget,
allocation.x + rect->x,
allocation.y + rect->y,
rect->width,
rect->height);
} }
static void static void