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

David Edmundson <k...@davidedmundson.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/kwin/commit/e9c68f36bdff
                   |                            |63a49589a5eb76c02a1e9845133
                   |                            |1
             Status|ASSIGNED                    |RESOLVED

--- Comment #10 from David Edmundson <k...@davidedmundson.co.uk> ---
Git commit e9c68f36bdff63a49589a5eb76c02a1e98451331 by David Edmundson, on
behalf of Alain Knaff.
Committed on 10/06/2020 at 10:11.
Pushed by davidedmundson into branch 'master'.

[x11] Send a valid timestamp in TakeFocus messages

Kwin sends out undated WM_TAKE_FOCUS client messages. Gtk based
applications such as Firefox react to these by handing focus to one of
their subwindows using XSetInputFocus(), and pass on the null time field
that they received in the client message to XSetInputFocus().

If for whatever reason the application (firefox) is slow to process the
event, it might issue that XSetInputFocus() message at a time when it
has already lost focus to the next application. This results in Firefox
stealing back the focus from the next application. Normally, such an
occurrence would not happen, as the server could tell by the time field
that the message is stale.

Until 2016 (e73e331f35b9da4bbb99c80c5c1eedd2ae99422b) kwin *used* to
send a valid timestamp, but this got deliberately broken to appease some
Java Applications which were "extremely picky" and would refuse focus.

This was based on the assumption that no other toolkit used the
timestamp from take focus events which is now proven to be false.

ICCCM document states:

Windows with the atom WM_TAKE_FOCUS in their WM_PROTOCOLS property may
receive  a ClientMessage event from the window manager (as described in
section 4.2.8) with WM_TAKE_FOCUS in its data[0] field and a valid
timestamp (i.e. not CurrentTime ) in its data[1] field."

M  +4    -3    x11client.cpp
M  +1    -2    x11client.h

https://invent.kde.org/plasma/kwin/commit/e9c68f36bdff63a49589a5eb76c02a1e98451331

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

Reply via email to