summaryrefslogtreecommitdiff
path: root/gtk/gtkruler.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2010-07-14 22:43:08 +0200
committerBenjamin Otte <otte@redhat.com>2010-07-26 16:42:47 +0200
commit41621e212b570aca757352d066e133e71287b268 (patch)
tree0feff5d860abbdb5b78f69aa16b4f2cf399ab39b /gtk/gtkruler.c
parent5fd0c28c7815c7a681ca44cf6c4dd9ae143885d3 (diff)
downloadgtk+-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.c41
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)
{