#include #include #if defined(GDK_WINDOWING_X11) #include #define GDK_NATIVE_WINDOW(wnd) ((guint)GDK_WINDOW_XID((wnd))) #elif defined(GDK_WINDOWING_WIN32) #include #define GDK_NATIVE_WINDOW(wnd) ((guint)GDK_WINDOW_HWND((wnd))) #else #define GDK_NATIVE_WINDOW(wnd) ((guint)(wnd)) #endif /* kind of windowing system */ static void dlg_show(GtkWidget *dlg, GdkWindow *parent) { if (dlg->window) { if (parent) { gdk_window_set_transient_for(dlg->window, parent); g_print("dlg_show: Setting transient\n"); } else { g_print("dlg_show: window ID is %d\n", GDK_NATIVE_WINDOW(dlg->window)); } } } int main(int argc, char **argv) { GtkWidget *dlg = NULL; GdkWindow *parent = NULL; gtk_init(&argc, &argv); dlg = gtk_dialog_new_with_buttons(argc > 1 ? "The Top" : "The Bottom", NULL, 0, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); if (argc > 1) parent = gdk_window_foreign_new(atoi(argv[1])); g_signal_connect(G_OBJECT(dlg), "show", (GCallback)dlg_show, parent); gtk_dialog_run(GTK_DIALOG(dlg)); gtk_widget_destroy(dlg); return 0; }