https://bugs.kde.org/show_bug.cgi?id=360841

Fabian Vogt <fab...@ritter-vogt.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |CONFIRMED
                 CC|                            |fab...@ritter-vogt.de
     Ever confirmed|0                           |1

--- Comment #43 from Fabian Vogt <fab...@ritter-vogt.de> ---
(In reply to Martin Flöser from comment #42)
> I'm able to reproduce the issue with Qt 5.9. From my investigation it looks
> like a behavioral change in Qt. KWin grabs key events on the X11 root window
> and passes the native events to Qt in order to have them composed as
> QKeyEvents. With Qt 5.9 it looks like  Qt no longer creates QKeyEvents for
> non-Qt windows. Due to that we are seeing the breakage.

I did some more investigation, it's not quite that simple.
Qt never created QKeyEvents for windows it does not have a handle for,
but before Qt 5.9 we had a handle for the root window!
It got created in scripting/workspace_wrapper.cpp, in this line:

    connect(QApplication::desktop(), SIGNAL(resized(int)),
SIGNAL(screenResized(int)));

The call to QApplication::desktop() created a foreign QXcbWindow that installed
an event listener for the root window.

Since 2b34aefcf02f09253473b096eb4faffd3e62b5f4 in qtbase
("Lazily create QPlatformWindow for Qt::Desktop windows") this is not the case
anymore, but simply calling QApplication::desktop()->winId() anywhere makes it
work again.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to