The focus field in
GdkEventCrossing
indicates whether the event window or one of its
ancestors has the keyboard input focus. Keyboard focus
is an X concept, used to determine which window should
receive key events. The window manager decides which
toplevel window has the focus (usually the focused
window is highlighted and brought to the top; most
window managers let you choose between "focus follows
mouse" and "click to focus" modes). When an application
has the focus, it is free to move it among its
subwindows---perhaps different text entry fields.
However, GTK+ does not use the X focus mechanism for
subwindows. Toplevel
GtkWindow widgets are the only ones which receive
the X focus. Thus, they receive all raw key events from
X (by way of GDK). GTK+ implements its own concept of
widget focus, which is
analagous to X's window focus, but in reality entirely
distinct. When a toplevel
GtkWindow widget receives key events, it forwards
them to the widget with GTK+'s focus.
In short, this means the
focus flag will be
TRUE if the toplevel
GtkWindow containing the event window currently
has the X focus. The
focus flag is unrelated to GTK+'s widget focus
concept.