#include void opent1(GtkWidget *w, gpointer ud){ GtkWindow *mainWin = GTK_WINDOW(ud); GtkWidget *btn = gtk_button_new_with_label("Dead Button"); GtkWidget *t1; t1 = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_transient_for(GTK_WINDOW(t1), mainWin); gtk_window_set_title(GTK_WINDOW(t1), "Transient #1"); gtk_container_add(GTK_CONTAINER(t1), btn); gtk_widget_show_all(t1); } void opent2(GtkWidget *w, gpointer ud){ GtkWindow *mainWin = GTK_WINDOW(ud); GtkWidget *lbl = gtk_label_new("This is transient #2"); GtkWidget *t2; t2 = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_transient_for(GTK_WINDOW(t2), mainWin); gtk_window_set_title(GTK_WINDOW(t2), "Transient #2"); gtk_container_add(GTK_CONTAINER(t2), lbl); gtk_widget_show_all(t2); } int main(int argc, char **argv){ GtkWidget *mainWin; GtkWidget *hbox; GtkWidget *btnT1; GtkWidget *btnT2; gtk_init(&argc, &argv); mainWin = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(mainWin), "Multiple Transient Windows"); hbox=gtk_hbox_new(FALSE, 1); btnT1 = gtk_button_new_with_label("Open Transient #1"); btnT2 = gtk_button_new_with_label("Open Transient #2"); gtk_box_pack_start(GTK_BOX(hbox), btnT1, FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(hbox), btnT2, FALSE, FALSE, 1); gtk_container_add(GTK_CONTAINER(mainWin), hbox); g_signal_connect(G_OBJECT(mainWin), "delete-event", G_CALLBACK(gtk_main_quit), (gpointer)mainWin); g_signal_connect(G_OBJECT(btnT1), "clicked", G_CALLBACK(opent1), (gpointer)mainWin); g_signal_connect(G_OBJECT(btnT2), "clicked", G_CALLBACK(opent2), (gpointer)mainWin); gtk_widget_show_all(mainWin); gtk_main(); return 0; }