Ethan Blanton a écrit :
Olivier Chapuis spake unto us the following wisdom:
Now a note on _NET_CURRENT_DESKTOP (and _NET_DESKTOP_VIEW PORT), the
EWMH spec says that this property (as a client msg) is for a pager. Thus
if gtk_window_present() uses this property (and one may understand that
it uses it in the *view of the doc*), you may understand that you go
beyond what an application is espected to do at startup: is gaim a
Pager?
After some discussion with the Gaim folk who grok Gtk+, we have some
questions ... are you actually _seeing_ _NET_CURRENT_DESKTOP or
_NET_DESKTOP_VIEWPORT?
I do not know I do not use gaim (I use psi). But I read the
discussion on the forum and Dominik conclude that such msg was send by
gaim. Moreover, my gtk_window_present() doc says:
"Presents a window to the user. This may mean raising the window in the
stacking order, deiconifying it, moving it to the current desktop,
and/or giving it the keyboard focus, possibly dependent on the user's
platform, window manager, and preferences."
So the doc says that gtk_window_present() may send a
_NET_CURRENT_DESKTOP client msg. Maybe this depends on the version of
gtk ...
As best we can tell, gtk_window_present()
calls gtk_window_show() when the window is not visible, and
gtk_window_focus() when it is. We suspect that the gtk_window_focus
is the problem, as it raises _NET_ACTIVE_WINDOW. Is it possible that
fvwm is actually seeing _NET_ACTIVE_WINDOW, this causes it to switch
desktops/pages? If so, is this an inappropriate client message (I
don't believe it is.) It is clearly causing a behavior that at least
some users are not pleased with.
I think that Dominik ask the user with the gaim problem to disable
_NET_ACTIVE_WINDOW msg for fvwm and the switching was still there. Dominik?
I do not think that _NET_ACTIVE_WINDOW is an inappropriate msg if the
source indication is set to 2 (indicating a normal application msg). gtk
does that with gtk_window_show() I think. I will add: a normal
application can set the source indication to 1 (taskbar/pager) or send a
_NET_CURRENT_DESKTOP msg if and only if this depends on a direct user
action or if this is a (non default) option of the app (e.g., maybe some
user like to have focus problems and want that an IM msg force the focus
to the discussion window :o).
Olivier