When we have a shaded window we have to create the four decoration quads manually. For each deco pixmap there has to be one quad of same size.

This requires some testing and will be backported in two or three weeks.
BUG: 195593

svn path=/trunk/KDE/kdebase/workspace/; revision=1004690
This commit is contained in:
Martin Gräßlin 2009-07-30 18:22:21 +00:00
parent 1e1cf86dc7
commit 1b24e5bf92

View file

@ -485,7 +485,18 @@ WindowQuadList Scene::Window::buildQuads( bool force ) const
QRegion decoration = (client && Workspace::self()->decorationHasAlpha() ? QRegion decoration = (client && Workspace::self()->decorationHasAlpha() ?
QRegion(client->decorationRect()) : shape()) - contents; QRegion(client->decorationRect()) : shape()) - contents;
ret = makeQuads( WindowQuadContents, contents ); ret = makeQuads( WindowQuadContents, contents );
ret += makeQuads( WindowQuadDecoration, decoration ); if( (client && !client->isShade()) || !client )
ret += makeQuads( WindowQuadDecoration, decoration );
else
{
// this is a shaded client, we have to create four decoartion quads
QRect left, top, right, bottom;
client->layoutDecorationRects( left, top, right, bottom, Client::WindowRelative );
ret += makeQuads( WindowQuadDecoration, top );
ret += makeQuads( WindowQuadDecoration, bottom );
ret += makeQuads( WindowQuadDecoration, left );
ret += makeQuads( WindowQuadDecoration, right );
}
} }
effects->buildQuads( static_cast<Client*>( toplevel )->effectWindow(), ret ); effects->buildQuads( static_cast<Client*>( toplevel )->effectWindow(), ret );
cached_quad_list = new WindowQuadList( ret ); cached_quad_list = new WindowQuadList( ret );