diff --git a/workspace.cpp b/workspace.cpp index ae28884864..d33bc41970 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -2927,6 +2927,10 @@ void Workspace::sendClientToDesktop( Client* c, int desk ) c->setDesktop( desk ); if( desk == NETWinInfo::OnAllDesktops ) 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() ) ) { c->show(); @@ -2942,6 +2946,7 @@ void Workspace::sendClientToDesktop( Client* c, int desk ) focus_chain.append( c ); } + for ( ClientList::ConstIterator it = clients.begin(); it != clients.end(); ++it) { if ( (*it)->transientFor() == c->window() ) { sendClientToDesktop( *it, desk );