diff options
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r-- | gtk/gtkrange.c | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index ae79bb6ef5..b3affe3da8 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -142,6 +142,7 @@ gtk_range_class_init (GtkRangeClass *class) class->step_forw = 3; class->step_back = 4; class->draw_background = NULL; + class->clear_background = NULL; class->draw_trough = gtk_real_range_draw_trough; class->draw_slider = gtk_real_range_draw_slider; class->draw_step_forw = NULL; @@ -245,6 +246,16 @@ gtk_range_draw_background (GtkRange *range) } void +gtk_range_clear_background (GtkRange *range) +{ + g_return_if_fail (range != NULL); + g_return_if_fail (GTK_IS_RANGE (range)); + + if (range->trough && RANGE_CLASS (range)->clear_background) + (* RANGE_CLASS (range)->clear_background) (range); +} + +void gtk_range_draw_trough (GtkRange *range) { g_return_if_fail (range != NULL); @@ -532,7 +543,7 @@ gtk_range_default_hmotion (GtkRange *range, else { gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); if (range->policy == GTK_UPDATE_DELAYED) { @@ -597,7 +608,7 @@ gtk_range_default_vmotion (GtkRange *range, else { gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); if (range->policy == GTK_UPDATE_DELAYED) { @@ -717,7 +728,6 @@ gtk_range_expose (GtkWidget *widget, * trough-drawing handler. (Probably should really pass another * argument - the redrawn area to all the drawing functions) */ - gint xt = widget->style->klass->xthickness; gint yt = widget->style->klass->ythickness; @@ -983,7 +993,7 @@ gtk_range_key_press (GtkWidget *widget, "value_changed"); gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); } } } @@ -1108,23 +1118,16 @@ gtk_real_range_draw_trough (GtkRange *range) g_return_if_fail (GTK_IS_RANGE (range)); if (range->trough) - { - gtk_draw_shadow (GTK_WIDGET (range)->style, range->trough, - GTK_STATE_NORMAL, GTK_SHADOW_IN, - 0, 0, -1, -1); - - if (GTK_WIDGET_HAS_FOCUS (range)) - gdk_draw_rectangle (GTK_WIDGET (range)->window, - GTK_WIDGET (range)->style->black_gc, - FALSE, 0, 0, - GTK_WIDGET (range)->allocation.width - 1, - GTK_WIDGET (range)->allocation.height - 1); - else if (range->trough != GTK_WIDGET (range)->window) - gdk_draw_rectangle (GTK_WIDGET (range)->window, - GTK_WIDGET (range)->style->bg_gc[GTK_STATE_NORMAL], - FALSE, 0, 0, - GTK_WIDGET (range)->allocation.width - 1, - GTK_WIDGET (range)->allocation.height - 1); + { + gtk_paint_box (GTK_WIDGET (range)->style, range->trough, + GTK_STATE_ACTIVE, GTK_SHADOW_IN, + NULL, GTK_WIDGET(range), "trough", + 0, 0, -1, -1); + if (GTK_WIDGET_HAS_FOCUS (range)) + gtk_paint_focus (GTK_WIDGET (range)->style, + range->trough, + NULL, GTK_WIDGET(range), "trough", + 0, 0, -1, -1); } } @@ -1132,10 +1135,10 @@ static void gtk_real_range_draw_slider (GtkRange *range) { GtkStateType state_type; - + g_return_if_fail (range != NULL); g_return_if_fail (GTK_IS_RANGE (range)); - + if (range->slider) { if ((range->in_child == RANGE_CLASS (range)->slider) || @@ -1143,13 +1146,10 @@ gtk_real_range_draw_slider (GtkRange *range) state_type = GTK_STATE_PRELIGHT; else state_type = GTK_STATE_NORMAL; - - gtk_style_set_background (GTK_WIDGET (range)->style, range->slider, state_type); - gdk_window_clear (range->slider); - - gtk_draw_shadow (GTK_WIDGET (range)->style, range->slider, - state_type, GTK_SHADOW_OUT, - 0, 0, -1, -1); + gtk_paint_box (GTK_WIDGET (range)->style, range->slider, + state_type, GTK_SHADOW_OUT, + NULL, GTK_WIDGET (range), "slider", + 0, 0, -1, -1); } } @@ -1289,7 +1289,7 @@ gtk_range_scroll (GtkRange *range, else { gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); } } @@ -1356,7 +1356,7 @@ gtk_range_adjustment_changed (GtkAdjustment *adjustment, (range->old_page_size != adjustment->page_size)) { gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); range->old_value = adjustment->value; range->old_lower = adjustment->lower; @@ -1379,7 +1379,7 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, if (range->old_value != adjustment->value) { gtk_range_slider_update (range); - gtk_range_draw_background (range); + gtk_range_clear_background (range); range->old_value = adjustment->value; } @@ -1474,7 +1474,7 @@ gtk_range_style_set (GtkWidget *widget, if (GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_NO_WINDOW (widget)) { - if (range->trough) + if (range->trough) { gtk_style_set_background (widget->style, range->trough, GTK_STATE_ACTIVE); if (GTK_WIDGET_DRAWABLE (widget)) @@ -1494,5 +1494,6 @@ gtk_range_style_set (GtkWidget *widget, if (GTK_WIDGET_DRAWABLE (widget)) gdk_window_clear (range->step_back); } + gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); } } |