summaryrefslogtreecommitdiff
path: root/src/mcompositescene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mcompositescene.cpp')
-rw-r--r--src/mcompositescene.cpp8
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