私のアプリケーションでは、メイン ウィンドウが複数のダイアログを生成します。多くの場合、複数のダイアログが同時に開かれます。Ubuntu では、メイン ウィンドウを最小化すると、各子ダイアログも最小化されます。Windows XP/Vista/7 では、ダイアログはメイン ウィンドウで最小化されません。
Windows で、メイン アプリケーションが最小化されたときにすべてのトップ レベル ウィンドウを最小化する方法はありますか。
編集:「window-state-event」のシグナルを設定し、手動で gtk_window_iconify を使用して解決しました。
信号の設定:
g_signal_connect(G_OBJECT(Main_Application), "window-state-event", G_CALLBACK(minimize_windows), NULL);
これがminimize_windows関数です。
gboolean minimize_windows( GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
{
GList *glist;
/*Returns a GList of each toplevel window*/
glist = gtk_window_list_toplevels();
/*Iconify check*/
if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED)
g_list_foreach(glist, (GFunc)gtk_window_iconify,NULL);
/* If not make sure all the windows are deiconified */
else
g_list_foreach(glist, (GFunc)gtk_window_deiconify, NULL);
g_list_free(glist);
return TRUE;
}