[Lazarus] Taskbar button for modal forms

cobines cobines at gmail.com
Mon Dec 27 02:23:41 CET 2010


I looked at some GTK2 programs and they usually create modal dialogs
through gtk_dialog_new() which sets GDK_WINDOW_TYPE_HINT_DIALOG for
the window, which in turn causes _NET_WM_WINDOW_TYPE_DIALOG X11
property to be set for such a window. This is causing the taskbar
button not to appear. In LCLGTK2 all forms have type hint set as
GDK_WINDOW_TYPE_HINT_NORMAL, so they don't get
_NET_WM_WINDOW_TYPE_DIALOG property. Some message boxes and user
prompts in LCLGTK2 are created with gtk_dialog_new() so they are fine
and don't have the taskbar button.

Maybe in GTK 2.12 if you call gtk_window_set_modal() it is enough, I
don't have sources so I couldn't check.

To remedy this, whenever modal form is being shown there should be a
call to gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_DIALOG)
or a direct call to gtk_window_set_skip_taskbar_hint(window, FALSE)
(which sets _NET_WM_STATE_SKIP_TASKBAR property). LCLQT does this too
by calling QWidget_setWindowFlags(Widget.Widget, QtDialog) in
TQtWSCustomForm.ShowHide.

I have opened issue http://bugs.freepascal.org/view.php?id=18323.

--
cobines




More information about the Lazarus mailing list