Don't miss synhetic UnmapNotify from XWithdrawWindow() sent
to the root window. svn path=/trunk/kdebase/kwin/; revision=254877
This commit is contained in:
parent
423d9c1066
commit
0050bd7155
1 changed files with 26 additions and 17 deletions
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue