diff --git a/effects/shadow.cpp b/effects/shadow.cpp index ee48f9f924..f75515fc8f 100644 --- a/effects/shadow.cpp +++ b/effects/shadow.cpp @@ -174,7 +174,7 @@ void ShadowEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data void ShadowEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time ) { - if( useShadow( w )) + if( useShadow( w ) && !data.quads.isTransformed()) { data.paint |= shadowRectangle( data.paint.boundingRect() ); } @@ -192,7 +192,7 @@ void ShadowEffect::drawWindow( EffectWindow* w, int mask, QRegion region, Window // first we need to draw all queued shadows. drawQueuedShadows( w ); } - if( useShadow( w )) + if( useShadow( w ) && !data.quads.isTransformed()) { if( !optimize ) { diff --git a/lib/kwineffects.cpp b/lib/kwineffects.cpp index 1073670faa..2063c834b4 100644 --- a/lib/kwineffects.cpp +++ b/lib/kwineffects.cpp @@ -741,6 +741,14 @@ bool WindowQuadList::smoothNeeded() const return false; } +bool WindowQuadList::isTransformed() const + { + foreach( WindowQuad q, *this ) + if( q.isTransformed()) + return true; + return false; + } + /*************************************************************** PaintClipper ***************************************************************/ diff --git a/lib/kwineffects.h b/lib/kwineffects.h index 32397b7c23..e901a11f02 100644 --- a/lib/kwineffects.h +++ b/lib/kwineffects.h @@ -831,6 +831,7 @@ class KWIN_EXPORT WindowQuadList WindowQuadList filterOut( WindowQuadType type ) const; bool smoothNeeded() const; void makeArrays( float** vertices, float** texcoords ) const; + bool isTransformed() const; }; class KWIN_EXPORT WindowPrePaintData