On 5/17/07, Havoc Pennington <[EMAIL PROTECTED]> wrote:
> Hi,
>
> Dana Jansens wrote:
> > One possible solution to all of this would be to demand that
> > applications ignore all focus events, and instead only use the
> > _NET_ACTIVE_WINDOW hint to determine if they are focused or not. That
> > should really be implemented and enforced somehow at the toolkit
> > level, though.
> >
> > Thoughts anyone?
>
> I think what apps may need to do is distinguish X Window System focus
> from user-visible window focus. You can get the X Window System focus
> reliably from the X events, and user-visible window focus from
> _NET_ACTIVE_WINDOW.
>
> Metacity iirc basically does this, sometimes it will draw a window frame
> as focused even though it does not have X focus.
>
> It is a bit bad for every app to listen to PropertyNotify on
> _NET_ACTIVE_WINDOW though (I think - most apps don't get PropertyNotify
> on root window already, do they?), so it might be nice to have another
> hint or client message that the WM uses to signal "is the focused
> toplevel as displayed to the user" where this is separate from the X
> concept of "will in fact get keyboard events"
>
> In some cases I think bugs here may just be that the X focus events are
> _hard_ to properly use; I think Owen had to try several times to get it
> right in GTK, and I think it took me a while to get right in metacity
> also. This is something a toolkit could simplify for the app layer
> (though GTK does not I don't think).
>
> For a long time gnome-terminal would keep blinking the cursor when
> unfocused since it's hard to get this right.
>
> Apps do need to track actual X focus for some purposes though, such as
> showing a focus indication on text boxes, and the danger with a separate
> hint is that apps could try using it for the wrong purposes and end up
> with worse races or bugs than they already have.
>
> Certainly part of the existing problem is that the whole focus situation
> is just complicated (GTK compounds it on the GtkWidget level, too), and
> so it's not clear that making it more complicated will help in practice,
> it might just pile on the confusion even if it theoretically makes
> something easier.

It sounds like, at the least, toolkits need to provide focus status
(through events or polling) differently to windows than to widgets
within them. For widgets, a Grab-type focus event should count. But
for top level windows, they need to be more intelligent about it,
however that may be done: through another hint/message, or possibly
through NotifyNormal and NotifyWhileGrabbed only.

I agree that watching the root window property would be bad. It would
be like the user_time (vs user_time_window) problem, causing
applications to wake up when they didn't need to.
_______________________________________________
wm-spec-list mailing list
wm-spec-list@gnome.org
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Reply via email to