[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/kwin
From: Thomas Lübking <thomas.luebking () web ! de>
Date: 2010-11-10 3:01:49
Message-ID: 20101110030149.7DD2DAC89E () svn ! kde ! org
[Download RAW message or body]
SVN commit 1194907 by luebking:
adjust/fix behaviour of Modal Dialogs reg. Minimizing, Virtual Desktop change & Shading
BUG: 193611
BUG: 180195
M +16 -1 client.cpp
M +4 -1 group.cpp
--- trunk/KDE/kdebase/workspace/kwin/client.cpp #1194906:1194907
@@ -1058,7 +1058,6 @@
discardWindowPixmap();
updateVisibility();
updateAllowedActions();
- workspace()->updateMinimizedOfTransients( this );
if( decoration )
decoration->shadeChange();
updateWindowRules();
@@ -1499,6 +1498,7 @@
desktop = qMin( workspace()->numberOfDesktops(), rules()->checkDesktop( desktop ));
if( desk == desktop )
return;
+
int was_desk = desk;
desk = desktop;
info->setDesktop( desktop );
@@ -1510,6 +1510,21 @@
}
if( decoration != NULL )
decoration->desktopChange();
+
+ ClientList transients_stacking_order = workspace()->ensureStackingOrder( transients() );
+ for( ClientList::ConstIterator it = transients_stacking_order.constBegin();
+ it != transients_stacking_order.constEnd();
+ ++it )
+ (*it)->setDesktop( desktop );
+
+ if( isModal()) // if a modal dialog is moved, move the mainwindow with it as otherwise
+ // the (just moved) modal dialog will confusingly return to the mainwindow with
+ // the next desktop change
+ {
+ foreach( Client* c2, mainClients())
+ c2->setDesktop( desktop );
+ }
+
workspace()->updateFocusChains( this, Workspace::FocusChainMakeFirst );
updateVisibility();
updateWindowRules();
--- trunk/KDE/kdebase/workspace/kwin/group.cpp #1194906:1194907
@@ -404,12 +404,15 @@
void Workspace::updateMinimizedOfTransients( Client* c )
{
// if mainwindow is minimized or shaded, minimize transients too
- if ( c->isMinimized() || c->isShade() )
+ if ( c->isMinimized() )
{
for( ClientList::ConstIterator it = c->transients().constBegin();
it != c->transients().constEnd();
++it )
{
+ if ((*it)->isModal())
+ continue; // there's no reason to hide modal dialogs with the main client
+ // but to keep them to eg. watch progress or whatever
if( !(*it)->isMinimized()
&& !(*it)->isTopMenu() ) // topmenus are not minimized, they're hidden
{
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic