clip boundingshaped regions in xrender backend

BUG: 311216
FIXED-IN: 4.10
This commit is contained in:
Thomas Lübking 2012-12-06 15:37:18 +01:00
parent eebabeb636
commit 5faa328f04

View file

@ -481,11 +481,18 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat
Client *client = dynamic_cast<Client*>(toplevel);
Deleted *deleted = dynamic_cast<Deleted*>(toplevel);
const QRect decorationRect = toplevel->decorationRect();
if ((client || deleted) && Workspace::self()->decorationHasAlpha())
if ((client && !client->noBorder()) || (deleted && !deleted->noBorder()) &&
Workspace::self()->decorationHasAlpha()) {
// decorated client
transformed_shape = decorationRect;
else
if (toplevel->shape()) {
// "xeyes" + decoration
transformed_shape -= cr;
transformed_shape += shape();
}
} else {
transformed_shape = shape();
}
if (toplevel->hasShadow())
transformed_shape |= toplevel->shadow()->shadowRegion();