[gtk+/composite-templates] quartz: Fix garbage content when windows are initially mapped



commit db3a476da0946f5c2c798c52878e6071af02a64a
Author: Kristian Rietveld <kris lanedo com>
Date:   Fri Sep 28 06:50:13 2012 +0200

    quartz: Fix garbage content when windows are initially mapped
    
    The garbage would be visible if any widget enabled the toplevel
    NSView's CALayer in order to do custom native rendering.
    (cherry picked from commit 92ea94af5f1a4d0970628b58997192ccf74cab36)

 gdk/quartz/GdkQuartzView.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c
index d2f791c..4955347 100644
--- a/gdk/quartz/GdkQuartzView.c
+++ b/gdk/quartz/GdkQuartzView.c
@@ -81,6 +81,25 @@
   if (NSEqualRects (rect, NSZeroRect))
     return;
 
+  if (!GDK_WINDOW_IS_MAPPED (gdk_window))
+    {
+      /* If the window is not yet mapped, clip_region_with_children
+       * will be empty causing the usual code below to draw nothing.
+       * To not see garbage on the screen, we draw an aesthetic color
+       * here. The garbage would be visible if any widget enabled
+       * the NSView's CALayer in order to add sublayers for custom
+       * native rendering.
+       */
+      [NSGraphicsContext saveGraphicsState];
+
+      [[[self window] backgroundColor] setFill];
+      [NSBezierPath fillRect:rect];
+
+      [NSGraphicsContext restoreGraphicsState];
+
+      return;
+    }
+
   /* Clear our own bookkeeping of regions that need display */
   if (impl->needs_display_region)
     {



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