diff options
author | Benjamin Otte <otte@redhat.com> | 2010-07-14 22:43:08 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2010-07-26 16:42:47 +0200 |
commit | 41621e212b570aca757352d066e133e71287b268 (patch) | |
tree | 0feff5d860abbdb5b78f69aa16b4f2cf399ab39b /gtk/gtkruler.c | |
parent | 5fd0c28c7815c7a681ca44cf6c4dd9ae143885d3 (diff) | |
download | gtk+-41621e212b570aca757352d066e133e71287b268.tar.gz |
ruler: Replace gdk_draw_drawable calls with Cairo
and get rid of the custom GC
Diffstat (limited to 'gtk/gtkruler.c')
-rw-r--r-- | gtk/gtkruler.c | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/gtk/gtkruler.c b/gtk/gtkruler.c index 0ffc746d73..1e32dc6a3f 100644 --- a/gtk/gtkruler.c +++ b/gtk/gtkruler.c @@ -46,7 +46,6 @@ struct _GtkRulerPriv GtkOrientation orientation; GtkRulerMetric *metric; - GdkGC *non_gr_exp_gc; GdkPixmap *backing_store; gint slider_size; @@ -505,12 +504,6 @@ gtk_ruler_unrealize (GtkWidget *widget) priv->backing_store = NULL; } - if (priv->non_gr_exp_gc) - { - g_object_unref (priv->non_gr_exp_gc); - priv->non_gr_exp_gc = NULL; - } - GTK_WIDGET_CLASS (gtk_ruler_parent_class)->unrealize (widget); } @@ -586,15 +579,15 @@ gtk_ruler_expose (GtkWidget *widget, { GtkRuler *ruler = GTK_RULER (widget); GtkRulerPriv *priv = ruler->priv; + cairo_t *cr; gtk_ruler_draw_ticks (ruler); - gdk_draw_drawable (widget->window, - priv->non_gr_exp_gc, - priv->backing_store, - 0, 0, 0, 0, - widget->allocation.width, - widget->allocation.height); + cr = gdk_cairo_create (widget->window); + gdk_cairo_set_source_pixmap (cr, priv->backing_store, 0, 0); + gdk_cairo_rectangle (cr, &event->area); + cairo_fill (cr); + cairo_destroy (cr); gtk_ruler_draw_pos (ruler); } @@ -629,12 +622,6 @@ gtk_ruler_make_pixmap (GtkRuler *ruler) priv->xsrc = 0; priv->ysrc = 0; - - if (!priv->non_gr_exp_gc) - { - priv->non_gr_exp_gc = gdk_gc_new (widget->window); - gdk_gc_set_exposures (priv->non_gr_exp_gc, FALSE); - } } static void @@ -891,13 +878,15 @@ gtk_ruler_real_draw_pos (GtkRuler *ruler) cairo_t *cr = gdk_cairo_create (widget->window); /* If a backing store exists, restore the ruler */ - if (priv->backing_store) - gdk_draw_drawable (widget->window, - widget->style->black_gc, - priv->backing_store, - priv->xsrc, priv->ysrc, - priv->xsrc, priv->ysrc, - bs_width, bs_height); + if (priv->backing_store) { + cairo_t *cr = gdk_cairo_create (widget->window); + + gdk_cairo_set_source_pixmap (cr, priv->backing_store, 0, 0); + cairo_rectangle (cr, priv->xsrc, priv->ysrc, bs_width, bs_height); + cairo_fill (cr); + + cairo_destroy (cr); + } if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) { |