[Xfce4-commits] r29705 - in xfwm4/trunk: . src

Olivier Fourdan olivier at xfce.org
Tue Apr 7 14:33:11 CEST 2009


Author: olivier
Date: 2009-04-07 12:33:09 +0000 (Tue, 07 Apr 2009)
New Revision: 29705

Modified:
   xfwm4/trunk/ChangeLog
   xfwm4/trunk/src/compositor.c
Log:
	* src/compositor.c: Make fullscreen override opaque, so screensaver
	  is not partly transparent even if not unredirecting fullscreen
	  windows.

Modified: xfwm4/trunk/ChangeLog
===================================================================
--- xfwm4/trunk/ChangeLog	2009-04-05 17:00:43 UTC (rev 29704)
+++ xfwm4/trunk/ChangeLog	2009-04-07 12:33:09 UTC (rev 29705)
@@ -1,3 +1,9 @@
+2009-04-07	olivier
+
+	* src/compositor.c: Make fullscreen override opaque, so screensaver
+	  is not partly transparent even if not unredirecting fullscreen
+	  windows.
+
 2009-04-05	olivier
 
 	* src/compositor.c: Check fullscreen status against each monitor and not

Modified: xfwm4/trunk/src/compositor.c
===================================================================
--- xfwm4/trunk/src/compositor.c	2009-04-05 17:00:43 UTC (rev 29704)
+++ xfwm4/trunk/src/compositor.c	2009-04-07 12:33:09 UTC (rev 29705)
@@ -73,6 +73,10 @@
 #define WIN_IS_ARGB(cw)                 (cw->argb)
 #define WIN_IS_OPAQUE(cw)               ((cw->opacity == NET_WM_OPAQUE) && !WIN_IS_ARGB(cw))
 #define WIN_IS_NATIVE_OPAQUE(cw)        ((cw->native_opacity) && !WIN_IS_ARGB(cw))
+#define WIN_IS_FULLSCREEN(cw)           ((cw->attr.x <= 0) && \
+                                           (cw->attr.y <= 0) && \
+                                           (cw->attr.width + 2 * cw->attr.border_width >= cw->screen_info->width) && \
+                                           (cw->attr.height + 2 * cw->attr.border_width >= cw->screen_info->height))
 #define WIN_IS_SHAPED(cw)               ((WIN_HAS_CLIENT(cw) && FLAG_TEST (cw->c->flags, CLIENT_FLAG_HAS_SHAPE)) || \
                                            (WIN_IS_OVERRIDE(cw) && (cw->shaped)))
 #define WIN_IS_VIEWABLE(cw)             (cw->viewable)
@@ -190,10 +194,7 @@
     GdkRectangle rect;
 
     /* First, check the good old way, the window is larger than the screen size */
-    if ((cw->attr.x <= 0) &&
-        (cw->attr.y <= 0) &&
-        (cw->attr.width + 2 * cw->attr.border_width >= cw->screen_info->width) &&
-        (cw->attr.height + 2 * cw->attr.border_width >= cw->screen_info->height))
+    if (WIN_IS_FULLSCREEN(cw))
     {
         return TRUE;
     }
@@ -951,7 +952,7 @@
     if ((screen_info->params->show_popup_shadow &&
               WIN_IS_OVERRIDE(cw) &&
               !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)) &&
-              !is_fullscreen(cw)) ||
+              !WIN_IS_FULLSCREEN(cw)) ||
           (screen_info->params->show_frame_shadow &&
               !WIN_IS_OVERRIDE(cw) &&
               !WIN_NO_SHADOW(cw) &&
@@ -1793,15 +1794,10 @@
     cw->viewable = TRUE;
     cw->damaged = FALSE;
 
-    if (!screen_info->params->unredirect_overlays)
-    {
-        TRACE ("Not unredirecting wins_unredirected");
-        return;
-    }
-
     /* Check for new windows to un-redirect. */
-    if (((screen_info->wins_unredirected > 0) || is_fullscreen(cw)) && WIN_HAS_DAMAGE(cw) && WIN_IS_OVERRIDE(cw) &&
-        WIN_IS_NATIVE_OPAQUE(cw) && WIN_IS_REDIRECTED(cw) && !WIN_IS_SHAPED(cw))
+    if (WIN_HAS_DAMAGE(cw) && WIN_IS_OVERRIDE(cw) &&
+        WIN_IS_NATIVE_OPAQUE(cw) && WIN_IS_REDIRECTED(cw) && !WIN_IS_SHAPED(cw)
+        && ((screen_info->wins_unredirected > 0) || is_fullscreen(cw)))
     {
         CWindow *top;
         GList *index;
@@ -1811,8 +1807,13 @@
 
         if (cw == top)
         {
-            TRACE ("Unredirecting toplevel window 0x%lx", cw->id);
-            unredirect_win (cw);
+            /* Make those opaque, we don't want them to be transparent */
+            cw->opacity = NET_WM_OPAQUE;
+            if (screen_info->params->unredirect_overlays)
+            {
+                TRACE ("Unredirecting toplevel window 0x%lx", cw->id);
+                unredirect_win (cw);
+            }
         }
     }
 }




More information about the Xfce4-commits mailing list