diff --git a/client.cpp b/client.cpp index 13c390aa87..3d097d3831 100644 --- a/client.cpp +++ b/client.cpp @@ -522,7 +522,10 @@ void Client::updateShape() // when the decoration calls it or when the decoration is created/destroyed updateInputShape(); if( compositing()) - addDamageFull(); + { + addRepaintFull(); + addWorkspaceRepaint( geometry()); // in case shape change removes part of this window + } if( scene != NULL ) scene->windowGeometryShapeChanged( this ); if( effects != NULL ) @@ -611,8 +614,6 @@ void Client::setMask( const QRegion& reg, int mode ) XShapeCombineShape( display(), frameId(), ShapeBounding, 0, 0, shape_helper_window, ShapeBounding, ShapeSet ); } - if( compositing()) - addDamageFull(); if( scene != NULL ) scene->windowGeometryShapeChanged( this ); if( effects != NULL ) diff --git a/events.cpp b/events.cpp index 36a832863c..705b21440f 100644 --- a/events.cpp +++ b/events.cpp @@ -1670,7 +1670,8 @@ bool Unmanaged::windowEvent( XEvent* e ) if( e->type == Extensions::shapeNotifyEvent() ) { detectShape( window()); - addDamageFull(); + addRepaintFull(); + addWorkspaceRepaint( geometry()); // in case shape change removes part of this window if( scene != NULL ) scene->windowGeometryShapeChanged( this ); if( effects != NULL )