CT: re-place a window when it is moved between desktops.

svn path=/trunk/kdebase/kwin/; revision=164082
This commit is contained in:
Cristian Tibirna 2002-07-01 04:22:02 +00:00
parent 4c1d786510
commit 2e99608428

View file

@ -2927,6 +2927,10 @@ void Workspace::sendClientToDesktop( Client* c, int desk )
c->setDesktop( desk ); c->setDesktop( desk );
if( desk == NETWinInfo::OnAllDesktops ) if( desk == NETWinInfo::OnAllDesktops )
c->setSticky( true ); c->setSticky( true );
else
//CT 01Jul2002 - the old position is most probably inappropriate on the new desktop
// thus we place the client again, before we show it, but only if it's not OnAllDesktops
place(c);
if ( c->isOnDesktop( currentDesktop() ) ) { if ( c->isOnDesktop( currentDesktop() ) ) {
c->show(); c->show();
@ -2942,6 +2946,7 @@ void Workspace::sendClientToDesktop( Client* c, int desk )
focus_chain.append( c ); focus_chain.append( c );
} }
for ( ClientList::ConstIterator it = clients.begin(); it != clients.end(); ++it) { for ( ClientList::ConstIterator it = clients.begin(); it != clients.end(); ++it) {
if ( (*it)->transientFor() == c->window() ) { if ( (*it)->transientFor() == c->window() ) {
sendClientToDesktop( *it, desk ); sendClientToDesktop( *it, desk );