reduce the number of X-errors. Thanks to Lars Hete for this one.
svn path=/trunk/kdebase/kwin/; revision=86918
This commit is contained in:
parent
5d5f9149fa
commit
11f1ab2b60
3 changed files with 16 additions and 4 deletions
|
@ -978,6 +978,8 @@ bool Client::unmapNotify( XUnmapEvent& e )
|
|||
void Client::withdraw()
|
||||
{
|
||||
Events::raise( isTransient() ? Events::TransDelete : Events::Delete );
|
||||
// remove early from client list
|
||||
workspace()->removeClient( this );
|
||||
setMappingState( WithdrawnState );
|
||||
info->setDesktop( 0 );
|
||||
desk = 0;
|
||||
|
|
|
@ -627,6 +627,14 @@ QRect Workspace::geometry() const
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void Workspace::removeClient( Client* c) {
|
||||
clients.remove( c );
|
||||
stacking_order.remove( c );
|
||||
focus_chain.remove( c );
|
||||
propagateClients();
|
||||
}
|
||||
|
||||
/*
|
||||
Destroys the client \a c
|
||||
*/
|
||||
|
@ -634,9 +642,10 @@ bool Workspace::destroyClient( Client* c)
|
|||
{
|
||||
if ( !c )
|
||||
return FALSE;
|
||||
clients.remove( c );
|
||||
stacking_order.remove( c );
|
||||
focus_chain.remove( c );
|
||||
|
||||
if (clients.contains(c))
|
||||
removeClient(c);
|
||||
|
||||
c->invalidateWindow();
|
||||
clientHidden( c );
|
||||
if ( c == desktop_client )
|
||||
|
@ -651,7 +660,6 @@ bool Workspace::destroyClient( Client* c)
|
|||
last_active_client = 0;
|
||||
storeFakeSessionInfo( c );
|
||||
delete c;
|
||||
propagateClients();
|
||||
updateClientArea();
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -102,6 +102,8 @@ public:
|
|||
|
||||
QRect clientArea();
|
||||
|
||||
void removeClient( Client* );
|
||||
|
||||
bool destroyClient( Client* );
|
||||
|
||||
void killWindowAtPosition(int x, int y);
|
||||
|
|
Loading…
Reference in a new issue