Don't activate SlideBack on unminimized Windows

BUG: 196900

svn path=/trunk/KDE/kdebase/workspace/; revision=992143
icc-effect-5.14.5
Michael Zanetti 2009-07-06 11:13:48 +00:00
parent defc3ca5df
commit 8428462ed3
2 changed files with 24 additions and 0 deletions

View File

@ -47,11 +47,19 @@ void SlideBackEffect::windowActivated( EffectWindow* w )
disabled = false;
return;
}
if( !isWindowUsable( w ) || !stackingOrderChanged() ) // Focus changed but stacking still the same
{
updateStackingOrder();
return;
}
if( unminimizedWindow == w ){ // A window was activated by beeing unminimized. Don't trigger SlideBack.
unminimizedWindow = NULL;
updateStackingOrder();
return;
}
// Determine all windows on top of the activated one
bool currentFound = false;
foreach( EffectWindow *tmp, oldStackingOrder )
@ -350,6 +358,20 @@ void SlideBackEffect::windowAdded( KWin::EffectWindow* w )
updateStackingOrder();
}
void SlideBackEffect::windowUnminimized( EffectWindow* w)
{
// SlideBack should not be triggered on an unminimized window. For this we need to store the last unminimized window.
// If a window is unminimized but not on top we need to clear the memory because the windowUnminimized() is not
// followed by a windowActivated().
if( isWindowOnTop( w ) )
{
unminimizedWindow = w;
}
else
{
unminimizedWindow = NULL;
}
}
void SlideBackEffect::tabBoxClosed()
{

View File

@ -44,6 +44,7 @@ class SlideBackEffect
virtual void windowDeleted( EffectWindow* w );
virtual void windowAdded( EffectWindow* w );
virtual void windowUnminimized( EffectWindow* w );
virtual void tabBoxClosed();
@ -54,6 +55,7 @@ class SlideBackEffect
EffectWindowList oldStackingOrder;
EffectWindowList coveringWindows;
EffectWindowList elevatedList;
EffectWindow* unminimizedWindow;
QHash<EffectWindow *, QRect> destinationList;
bool disabled;
QList <QRegion> clippedRegions;