Don't miss synhetic UnmapNotify from XWithdrawWindow() sent

to the root window.

svn path=/trunk/kdebase/kwin/; revision=254877
This commit is contained in:
Luboš Luňák 2003-09-29 14:39:02 +00:00
parent 423d9c1066
commit 0050bd7155

View file

@ -239,6 +239,13 @@ bool Workspace::workspaceEvent( XEvent * e )
case UnmapNotify: case UnmapNotify:
{ {
// get also synthetic UnmapNotify from XWithdrawWindow(),
// xunmap.window is different from xany.window
if( Client* c = findClient( WindowMatchPredicate( e->xunmap.window )))
{
c->windowEvent( e );
return true;
}
// check for system tray windows // check for system tray windows
if ( removeSystemTrayWin( e->xunmap.window ) ) if ( removeSystemTrayWin( e->xunmap.window ) )
{ {
@ -285,6 +292,7 @@ bool Workspace::workspaceEvent( XEvent * e )
{ {
updateXTime(); updateXTime();
// e->xmaprequest.window is different from e->xany.window
Client* c = findClient( WindowMatchPredicate( e->xmaprequest.window )); Client* c = findClient( WindowMatchPredicate( e->xmaprequest.window ));
if ( !c ) if ( !c )
{ {
@ -337,6 +345,7 @@ bool Workspace::workspaceEvent( XEvent * e )
{ {
if ( !QWhatsThis::inWhatsThisMode() ) if ( !QWhatsThis::inWhatsThisMode() )
break; break;
// TODO is this cliente ever found, given that client events are searched above?
Client* c = findClient( FrameIdMatchPredicate( e->xcrossing.window )); Client* c = findClient( FrameIdMatchPredicate( e->xcrossing.window ));
if ( c && e->xcrossing.detail != NotifyInferior ) if ( c && e->xcrossing.detail != NotifyInferior )
QWhatsThis::leaveWhatsThisMode(); QWhatsThis::leaveWhatsThisMode();