From 92ea94af5f1a4d0970628b58997192ccf74cab36 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Fri, 28 Sep 2012 06:50:13 +0200 Subject: [PATCH] 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. --- gdk/quartz/GdkQuartzView.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c index 5606b9920f..2a75da9fc1 100644 --- a/gdk/quartz/GdkQuartzView.c +++ b/gdk/quartz/GdkQuartzView.c @@ -86,6 +86,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) {