ruler: Replace gdk_draw_drawable calls with Cairo

and get rid of the custom GC
This commit is contained in:
Benjamin Otte
2010-08-07 03:36:52 +02:00
parent 6740d24bb8
commit fe401cdbb4

View File

@@ -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)
{