Render full-screen windows as opaque and shadowless. Signed-off-by: Darren Salt Index: src/compositor.c =================================================================== --- src/compositor.c (revision 22201) +++ src/compositor.c (working copy) @@ -68,12 +68,13 @@ !FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN)) #define WIN_IS_OVERRIDE(cw) (cw->c == NULL) #define WIN_IS_ARGB(cw) (cw->argb) -#define WIN_IS_OPAQUE(cw) (((cw->opacity == NET_WM_OPAQUE) && !WIN_IS_ARGB(cw)) || (cw->screen_info->overlays)) +#define WIN_IS_OPAQUE(cw) (((cw->opacity == NET_WM_OPAQUE) && !WIN_IS_ARGB(cw)) || (cw->screen_info->overlays) || WIN_IS_FULLSCREEN(cw)) #define WIN_IS_NATIVE_OPAQUE(cw) ((cw->native_opacity) && !WIN_IS_ARGB(cw)) -#define WIN_IS_FULLSCREEN(cw) ((cw->attr.x <= 0) && \ +#define WIN_IS_FULLSCREEN(cw) ((cw->c && FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN)) || \ + ((cw->attr.x <= 0) && \ (cw->attr.y <= 0) && \ (cw->attr.width >= cw->screen_info->width) && \ - (cw->attr.height >= cw->screen_info->height)) + (cw->attr.height >= cw->screen_info->height))) #define WIN_IS_SHAPED(cw) ((!WIN_IS_OVERRIDE(cw) && FLAG_TEST (cw->c->flags, CLIENT_FLAG_HAS_SHAPE)) || \ (WIN_IS_OVERRIDE(cw) && (cw->shaped))) #define WIN_IS_VIEWABLE(cw) (cw->viewable) @@ -836,13 +837,14 @@ windows, - it's an override redirect window that is not shaped, not an argb and the user asked for shadows on so called "popup" windows. + We don't apply shadows to full-screen windows. There's no point. */ if (!(screen_info->overlays) && ((WIN_IS_OVERRIDE(cw) && !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)) && screen_info->params->show_popup_shadow) || - (!WIN_IS_OVERRIDE(cw) && + (!WIN_IS_OVERRIDE(cw) && !WIN_IS_FULLSCREEN(cw) && (WIN_HAS_FRAME(cw) || !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw))) && screen_info->params->show_frame_shadow))) { @@ -1233,7 +1235,8 @@ if (cw->picture) { - if ((cw->opacity != NET_WM_OPAQUE) && !(cw->alphaPict)) + if ((cw->opacity != NET_WM_OPAQUE) && !(cw->alphaPict) && + !WIN_IS_FULLSCREEN(cw)) { cw->alphaPict = solid_picture (screen_info, FALSE, (double) cw->opacity / NET_WM_OPAQUE, 0, 0, 0);