[gtk+/wip/simple-draw3: 19/23] Don't paint window backgrounds for non-double buffered windows



commit 1224011b8a4fb854a9d6f89fb80350b81b7cf774
Author: Alexander Larsson <alexl redhat com>
Date:   Mon Apr 29 14:40:46 2013 +0200

    Don't paint window backgrounds for non-double buffered windows
    
    We used to paint the background in begin_paint, which was never
    called for non-double buffered windows, so we do the same in the
    new world. This makes emacs painting work again.

 gtk/gtkwidget.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index c2ca7bd..28683f6 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -6393,13 +6393,19 @@ _gtk_widget_draw_windows (GdkWindow *window,
 
   if (gdk_cairo_get_clip_rectangle (cr, NULL))
     {
-      cairo_save (cr);
-      pattern = gdk_window_get_background_pattern (window);
-      cairo_set_source (cr, pattern);
-      cairo_paint (cr);
-      cairo_restore (cr);
-
       gdk_window_get_user_data (window, (gpointer *) &widget);
+
+      /* Only clear bg if double bufferer. This is what we used
+        to do before, where begin_paint() did the clearing. */
+      if (widget->priv->double_buffered)
+       {
+         cairo_save (cr);
+         pattern = gdk_window_get_background_pattern (window);
+         cairo_set_source (cr, pattern);
+         cairo_paint (cr);
+         cairo_restore (cr);
+       }
+
       do_clip = _gtk_widget_get_translation_to_window (widget, window,
                                                       &x, &y);
       cairo_save (cr);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]