Do not pass events with no window to the findClient - windowEvent cascade
If the eventWindow is none the check for InputIdMatchPredicate will find a matching Client and pass the even through the windowEvent filter which returns true for all not handled events and thus filters out all events processed later on in KWin. This explains why some events were eaten...
This commit is contained in:
parent
c1d0a32b64
commit
7ed07e45c7
1 changed files with 23 additions and 21 deletions
|
@ -229,6 +229,7 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
|||
};
|
||||
|
||||
const xcb_window_t eventWindow = findEventWindow(e);
|
||||
if (eventWindow != XCB_WINDOW_NONE) {
|
||||
if (Client* c = findClient(WindowMatchPredicate(eventWindow))) {
|
||||
if (c->windowEvent(e))
|
||||
return true;
|
||||
|
@ -253,6 +254,7 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (movingClient) {
|
||||
if (eventType == XCB_BUTTON_PRESS || eventType == XCB_BUTTON_RELEASE) {
|
||||
if (movingClient->moveResizeGrabWindow() == reinterpret_cast<xcb_button_press_event_t*>(e)->event && movingClient->windowEvent(e)) {
|
||||
|
|
Loading…
Reference in a new issue