diff options
-rw-r--r-- | src/mcompositescene.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mcompositescene.cpp b/src/mcompositescene.cpp index 617d6b0..239e991 100644 --- a/src/mcompositescene.cpp +++ b/src/mcompositescene.cpp @@ -121,9 +121,11 @@ void MCompositeScene::drawItems(QPainter *painter, int numItems, QGraphicsItem * // nothing below is visible anymore break; - // FIXME: this region is always the same as the window's shape, - // some transformations would be needed... - QRegion r(cw->propertyCache()->shapeRegion()); + // Ensure that intersects() still work, otherwise, painting a window + // is skipped when another window above it is scaled or moved to an + // area that exposed the lower window and causes an ugly flicker. + // r reflects the applied transformation and position of the window + QRegion r = cw->sceneTransform().map(cw->propertyCache()->shapeRegion()); // transitioning window can be smaller than shapeRegion(), so paint // all transitioning windows |