Fix Client unmapNotify event handling
We get the missing send event attribute from anding the event's response type with 0x80. This fixes the issue that all open windows got unmapped. The reason for this was that the existing new Client got reparented to the wrapper which caused the UnmapNotify event which we used to release the Client and by that unmapping the window completely.
This commit is contained in:
parent
4193b2406f
commit
41bb797919
1 changed files with 1 additions and 4 deletions
|
@ -656,17 +656,14 @@ void Client::unmapNotifyEvent(xcb_unmap_notify_event_t *e)
|
|||
{
|
||||
if (e->window != window())
|
||||
return;
|
||||
#warning unmap notify event doesn't have a sendEvent attribute, where did it come from in XUnmapNotify?
|
||||
#if KWIN_QT5_PORTING
|
||||
if (e->event != wrapperId()) {
|
||||
// most probably event from root window when initially reparenting
|
||||
bool ignore = true;
|
||||
if (e->event == rootWindow() && e->send_event)
|
||||
if (e->event == rootWindow() && (e->response_type & 0x80))
|
||||
ignore = false; // XWithdrawWindow()
|
||||
if (ignore)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// check whether this is result of an XReparentWindow - client then won't be parented by wrapper
|
||||
// in this case do not release the client (causes reparent to root, removal from saveSet and what not)
|
||||
|
|
Loading…
Reference in a new issue