Avoid event processing infinite loop

Summary:
Kwin on X11 overrides QCoreApplication::notify to get low level system
event.

If something handled by the low level filtering ever calls postEvent we
would end up in a loop. This was found when forwarding a key event into
a QQuickWindow in a similar manner that mouse events are forwarded.

Fortunately there's a flag to separate generated and core events

Test Plan:
No more infinite loop
Kwin X11 still works fine

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D24207
This commit is contained in:
David Edmundson 2019-09-25 14:27:15 +01:00
parent ef5406990e
commit 0c876cd93f

View file

@ -273,7 +273,7 @@ void ApplicationX11::performStartup()
bool ApplicationX11::notify(QObject* o, QEvent* e)
{
if (Workspace::self()->workspaceEvent(e))
if (e->spontaneous() && Workspace::self()->workspaceEvent(e))
return true;
return QApplication::notify(o, e);
}