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);
+            }
         }
     }
 }

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to