bahave better if the user moves the window while changing the stacking
order svn path=/trunk/KDE/kdebase/workspace/; revision=957532
This commit is contained in:
parent
3068e52b1f
commit
a5d8b15573
1 changed files with 18 additions and 3 deletions
|
@ -228,11 +228,14 @@ void SlideBackEffect::postPaintWindow( EffectWindow* w )
|
||||||
// restore the stacking order of all windows not intersecting any more except panels
|
// restore the stacking order of all windows not intersecting any more except panels
|
||||||
if( coveringWindows.contains( w ) )
|
if( coveringWindows.contains( w ) )
|
||||||
{
|
{
|
||||||
|
EffectWindowList tmpList;
|
||||||
foreach( EffectWindow *tmp, elevatedList )
|
foreach( EffectWindow *tmp, elevatedList )
|
||||||
{
|
{
|
||||||
if( coveringWindows.contains( tmp ) )
|
if( effects->activeWindow() && effects->activeWindow()->geometry().intersects( tmp->geometry() ) )
|
||||||
{
|
{
|
||||||
QRect newDestination = getSlideDestination( effects->activeWindow()->geometry(), tmp->geometry() );
|
QRect newDestination = getSlideDestination( effects->activeWindow()->geometry(), tmp->geometry() );
|
||||||
|
if( !motionManager.isManaging( tmp ) )
|
||||||
|
motionManager.manage( tmp );
|
||||||
motionManager.moveWindow( tmp, newDestination );
|
motionManager.moveWindow( tmp, newDestination );
|
||||||
destinationList[tmp] = newDestination;
|
destinationList[tmp] = newDestination;
|
||||||
}
|
}
|
||||||
|
@ -240,10 +243,22 @@ void SlideBackEffect::postPaintWindow( EffectWindow* w )
|
||||||
{
|
{
|
||||||
if( !tmp->isDock() )
|
if( !tmp->isDock() )
|
||||||
{
|
{
|
||||||
effects->setElevatedWindow( tmp, false );
|
bool keepElevated = false;
|
||||||
elevatedList.removeAll( tmp );
|
foreach( EffectWindow *elevatedWindow, tmpList)
|
||||||
|
{
|
||||||
|
if( tmp->geometry().intersects( elevatedWindow->geometry() ) )
|
||||||
|
{
|
||||||
|
keepElevated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( !keepElevated )
|
||||||
|
{
|
||||||
|
effects->setElevatedWindow( tmp, false );
|
||||||
|
elevatedList.removeAll( tmp );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tmpList.append(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue