>> That said, at least the gdk_window_set_keep_above() function can be
>> tested with testgtk, and it seems to work.
> I may be wrong, but I remember that various users reported that it would
> not work on Windows. Is GIMP doing something differently than testgtk?
(Pay attention to gdk vs. gtk below...)
The way GIMP uses gdk_window_set_keep_above() is different from the
way testgtk uses it. GIMP actually calls gtk_window_set_keep_above(),
and before the window has been mapped even. This, I guess, as such is
a reasonable thing to do, but the end result is that
gdk_window_set_keep_above() never gets called for a mapped window with
Presumably this is due to some bug in GTK+, but I have no idea where
in GTK+ exactly. As such the code for the non-mapped case of
gdk_window_set_keep_above() in the win32 backend is exactly like the
corresponding code in the x11 backend, it calls the cross-platform
gdk_synthesize_window_state() function and the result of the actions
caused by this is in cross-platform code, until eventually then
something *should* cause gdk_window_set_keep_above() to be called with
setting=TRUE once the window has been mapped. But that doesn't happen.
My guess is that the reason for the above is some slight difference in
when and/or in what sequence GDK events are generated between the
win32 and x11 backend, and that the related cross-platform code some
implicit dependency on the event sequence or timing of the x11
backend. More debugging and comparing of function call traces on win32
vs. x11 would be needed to find out exactly...
testgtk on the other hand (when one clicks the "Keep above" toggle
button of the "window states" test) explicitly calls
gdk_window_set_keep_above() with setting=TRUE on an already mapped
window... and that works.
Perhaps it would be a good idea to add also a test for the setting
keep-above before a window is shown to testgtk.
> I'd say the somewhat established behavior for 'utility windows' is that
> they are not listed in the taskbar and that they are kept above normal
> windows of the same application. Some window managers also reduce the
> window decorations, but that is probably not obligatory.
> Would it help if we made a small example application? Perhaps add some
> code to testgtk?
That would make testing a bit easier, yes.
Gimp-developer mailing list