[gtk+] Fix clearing of window background for some transparent notification icons



commit fa214590662ae57ec0011e25ec0c6fafb65b165d
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Aug 11 15:41:23 2009 +0200

    Fix clearing of window background for some transparent notification icons
    
    This extends the usage of the native clear region call such that its
    called also for windows that have parent relative background all the
    way up to a native window. That way we get true background relative
    background clearing even to a foreign parent, which means that some
    transparent notification icons look right again.

 gdk/gdkwindow.c |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 2b773c2..0b8b84b 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -4126,6 +4126,24 @@ gdk_window_clear (GdkWindow *window)
 			 width, height);
 }
 
+static gboolean
+clears_on_native (GdkWindowObject *private)
+{
+  GdkWindowObject *next;
+
+  next = private;
+  do
+    {
+      private = next;
+      if (gdk_window_has_impl (private))
+	return TRUE;
+      next = private->parent;
+    }
+  while (private->bg_pixmap == GDK_PARENT_RELATIVE_BG &&
+	 next && next->window_type != GDK_WINDOW_ROOT);
+  return FALSE;
+}
+
 static void
 gdk_window_clear_region_internal (GdkWindow *window,
 				  GdkRegion *region,
@@ -4141,7 +4159,7 @@ gdk_window_clear_region_internal (GdkWindow *window,
 	gdk_window_clear_backing_region_redirect (window, region);
 
       if (GDK_WINDOW_IMPL_GET_IFACE (private->impl)->clear_region &&
-	  gdk_window_has_impl (private))
+	  clears_on_native (private))
 	{
 	  GdkRegion *copy;
 	  copy = gdk_region_copy (region);



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