--- a/eel/eel-canvas.c +++ b/eel/eel-canvas.c @@ -3213,11 +3213,19 @@ eel_canvas_draw (GtkWidget *widget, cair return FALSE; bin_window = gtk_layout_get_bin_window (GTK_LAYOUT (widget)); + + if (!gtk_cairo_should_draw_window (cr, bin_window)) + return FALSE; + + cairo_save (cr); + gtk_cairo_transform_to_window (cr, widget, bin_window); region = eel_cairo_get_clip_region (cr); - if (region == NULL) + if (region == NULL) { + cairo_restore (cr); return FALSE; + } #ifdef VERBOSE g_print ("Draw\n"); @@ -3249,6 +3257,8 @@ eel_canvas_draw (GtkWidget *widget, cair if (canvas->root->flags & EEL_CANVAS_ITEM_MAPPED) EEL_CANVAS_ITEM_GET_CLASS (canvas->root)->draw (canvas->root, cr, region); + cairo_restore (cr); + /* Chain up to get exposes on child widgets */ if (GTK_WIDGET_CLASS (canvas_parent_class)->draw) GTK_WIDGET_CLASS (canvas_parent_class)->draw (widget, cr);