tags 384428 -unreproducible
severity 266118 important
quit

Been an antertaining adventure trying to track this down. Wonderful
finding things like _gdk_x11_set_input_focus_safe(), which amounts to a
reinplementation of XSetInputFocus(). Even the simplest developer should
have found XSetErrorHandler() in half a second, which would have fixed
that issue. In fact it's rather a Bad Sign(tm) when you find a source
file includes Xlibint.h, which is reserved for Xlib internals. I'm forced
to wonder, perhaps the GDK developers would prefer the Xcb library over
the X11 library?


Anyway, the underlying problem of bug #266118. I tracked this to the
function gdk_wm_protocols_filter() in the file gdkevents-x11.c. The
problematic window manager message is WM_TAKE_FOCUS. This, plus the
setting of the InputHint flag corresponds with X's "locally active" input
model.

This is not a portion of X I'm particularly strong with, so my
conclusions could be wrong. What appears to be happening is whenever GDK
receives the WM_TAKE_FOCUS message it is always immediately calling
_gdk_x11_set_input_focus_safe()^WXSetInputFocus() to set the focus to
it's top-level window, even before it receives the FocusIn event.

Comparing with other libraries, I note Qt also makes use of
WM_TAKE_FOCUS, but does not display this problem. I get the feeling GDK
is misinterpreting how the locally active focus model is supposed to
work. It looks like GDK is always moving focus to its top level window,
never anywhere else; if so, this could readily be accomplished with
passive focus.


At this point, I'm pretty inclined to believe this is a problem with GDK
and unclutter just happens to be the lucky program to tweak it. I'm
working on getting a debug build of QtGui done so I can make a better
comparison to verify this, I suspect that will only confirm this
conclusion.

On the flip side, despite likely not being at fault, unclutter really
could do with some detection for this sort of condition. I imagine this
could reappear with something else in the future; or it might well get
fixed and then get regressed. I'm also astonished a bug like this could
remain in Debian for *7 years*!


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         e...@gremlin.m5p.com PGP F6B23DE0         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
2477\___\_|_/DC21 03A0 5D61 985B <-PGP-> F2BE 6526 ABD2 F6B2\_|_/___/3DE0





-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to