From fe401cdbb4558aa267d2081be65f5035b2b9f7f4 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 7 Aug 2010 03:36:52 +0200 Subject: [PATCH] ruler: Replace gdk_draw_drawable calls with Cairo and get rid of the custom GC --- gtk/gtkruler.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/gtk/gtkruler.c b/gtk/gtkruler.c index 5e16daf9e4..36111a4c26 100644 --- a/gtk/gtkruler.c +++ b/gtk/gtkruler.c @@ -479,12 +479,6 @@ gtk_ruler_unrealize (GtkWidget *widget) ruler->backing_store = NULL; } - if (ruler->non_gr_exp_gc) - { - g_object_unref (ruler->non_gr_exp_gc); - ruler->non_gr_exp_gc = NULL; - } - GTK_WIDGET_CLASS (gtk_ruler_parent_class)->unrealize (widget); } @@ -558,15 +552,15 @@ gtk_ruler_expose (GtkWidget *widget, if (gtk_widget_is_drawable (widget)) { GtkRuler *ruler = GTK_RULER (widget); + cairo_t *cr; gtk_ruler_draw_ticks (ruler); - gdk_draw_drawable (widget->window, - ruler->non_gr_exp_gc, - ruler->backing_store, - 0, 0, 0, 0, - widget->allocation.width, - widget->allocation.height); + cr = gdk_cairo_create (widget->window); + gdk_cairo_set_source_pixmap (cr, ruler->backing_store, 0, 0); + gdk_cairo_rectangle (cr, &event->area); + cairo_fill (cr); + cairo_destroy (cr); gtk_ruler_draw_pos (ruler); } @@ -600,12 +594,6 @@ gtk_ruler_make_pixmap (GtkRuler *ruler) ruler->xsrc = 0; ruler->ysrc = 0; - - if (!ruler->non_gr_exp_gc) - { - ruler->non_gr_exp_gc = gdk_gc_new (widget->window); - gdk_gc_set_exposures (ruler->non_gr_exp_gc, FALSE); - } } static void @@ -864,12 +852,15 @@ gtk_ruler_real_draw_pos (GtkRuler *ruler) /* If a backing store exists, restore the ruler */ if (ruler->backing_store) - gdk_draw_drawable (widget->window, - widget->style->black_gc, - ruler->backing_store, - ruler->xsrc, ruler->ysrc, - ruler->xsrc, ruler->ysrc, - bs_width, bs_height); + { + cairo_t *cr = gdk_cairo_create (widget->window); + + gdk_cairo_set_source_pixmap (cr, ruler->backing_store, 0, 0); + cairo_rectangle (cr, ruler->xsrc, ruler->ysrc, bs_width, bs_height); + cairo_fill (cr); + + cairo_destroy (cr); + } if (private->orientation == GTK_ORIENTATION_HORIZONTAL) {