Hide modal dialogs in desktop grid (pw mode) while moving the parent window.

svn path=/trunk/KDE/kdebase/workspace/; revision=1105756
This commit is contained in:
Martin Gräßlin 2010-03-21 10:44:55 +00:00
parent 782d08e0b0
commit cb7c271768

View file

@ -250,6 +250,8 @@ void DesktopGridEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& dat
if( w->y() + w->height() > screenGeom.y() + screenGeom.height() )
data.quads = data.quads.splitAtY( screenGeom.y() + screenGeom.height() - w->y() );
}
if( windowMove && wasWindowMove && windowMove->findModal() == w )
w->disablePainting( EffectWindow::PAINT_DISABLED_BY_DESKTOP );
}
else
w->disablePainting( EffectWindow::PAINT_DISABLED_BY_DESKTOP );
@ -475,6 +477,11 @@ void DesktopGridEffect::windowInputMouseEvent( Window, QEvent* e )
m_windowMoveStartPoint = me->pos();
}
manager.unmanage( windowMove );
if( EffectWindow* modal = windowMove->findModal() )
{
if( manager.isManaging( modal ) )
manager.unmanage( modal );
}
m_proxy->calculateWindowTransformations( manager.managedWindows(), windowMove->screen(), manager );
}
}
@ -489,6 +496,11 @@ void DesktopGridEffect::windowInputMouseEvent( Window, QEvent* e )
m_windowMoveStartPoint = me->pos();
manager.unmanage( windowMove );
if( EffectWindow* modal = windowMove->findModal() )
{
if( manager.isManaging( modal ) )
manager.unmanage( modal );
}
m_proxy->calculateWindowTransformations( manager.managedWindows(), windowMove->screen(), manager );
}
XDefineCursor( display(), input, QCursor( Qt::ClosedHandCursor ).handle() );
@ -643,6 +655,8 @@ void DesktopGridEffect::windowInputMouseEvent( Window, QEvent* e )
{
WindowMotionManager& manager = m_managers[ (i)*(effects->numScreens()) + windowMove->screen() ];
manager.manage( windowMove );
if( EffectWindow* modal = windowMove->findModal() )
manager.manage( modal );
if( i+1 == targetDesktop )
{
// for the desktop the window is dropped on, we use the current geometry
@ -655,6 +669,8 @@ void DesktopGridEffect::windowInputMouseEvent( Window, QEvent* e )
{
WindowMotionManager& manager = m_managers[ (windowMove->desktop()-1)*(effects->numScreens()) + windowMove->screen() ];
manager.manage( windowMove );
if( EffectWindow* modal = windowMove->findModal() )
manager.manage( modal );
manager.setTransformedGeometry( windowMove, moveGeometryToDesktop( windowMove->desktop() ) );
m_proxy->calculateWindowTransformations( manager.managedWindows(), windowMove->screen(), manager );
}