diff --git a/effects/scalein.cpp b/effects/scalein.cpp index 2a3c19b9a7..e6f65f5348 100644 --- a/effects/scalein.cpp +++ b/effects/scalein.cpp @@ -47,7 +47,7 @@ void ScaleInEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& data, i void ScaleInEffect::paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data ) { - if( windows.contains( w )) + if( windows.contains( w ) && isScaleWindow( w ) ) { data.xScale *= windows[ w ]; data.yScale *= windows[ w ]; @@ -57,6 +57,14 @@ void ScaleInEffect::paintWindow( EffectWindow* w, int mask, QRegion region, Wind effects->paintWindow( w, mask, region, data ); } +bool ScaleInEffect::isScaleWindow( EffectWindow* w ) + { + // TODO: isSpecialWindow is rather generic, maybe tell windowtypes separately? + if ( w->isPopupMenu() || w->isSpecialWindow() ) + return false; + return true; + } + void ScaleInEffect::postPaintWindow( EffectWindow* w ) { if( windows.contains( w )) diff --git a/effects/scalein.h b/effects/scalein.h index 5ae0c08c10..693290fa41 100644 --- a/effects/scalein.h +++ b/effects/scalein.h @@ -38,6 +38,7 @@ class ScaleInEffect virtual void windowAdded( EffectWindow* c ); virtual void windowClosed( EffectWindow* c ); private: + bool isScaleWindow ( EffectWindow* w ); QHash< const EffectWindow*, double > windows; };