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