Re: Dialogs in middle of windows

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 7 Dec 2004, Todd Fisher wrote:

[ snipped ]

Thanks guys, that worked a treat!

I had to make the parent window a static global so that the following code could function properly:

static void about(GtkWidget *w, gpointer data)
{
        gint x, y, pwidth, pheight, width, height;
        GtkWidget *dialog, *label, *button;

        dialog = gtk_dialog_new();
        gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
        gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(w));
        gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);

        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);

        label = gtk_label_new(ABOUT);
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE, TRUE, 0);
        gtk_widget_show(label);

        button = gtk_button_new_with_label("OK");
        gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(dismiss), dialog);
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), button, TRUE, TRUE, 0);
        gtk_widget_show(button);

        gtk_window_get_position(GTK_WINDOW(window), &x, &y);
        gtk_window_get_size(GTK_WINDOW(window), &pwidth, &pheight);
        gtk_window_get_size(GTK_WINDOW(dialog), &width, &height);

#ifdef DEBUG
printf("Parent position: %d, %d\n", x, y);
printf("Parent size: %d, %d\nDialog size: %d, %d\n", pwidth, pheight, width, height);
#endif /* DEBUG */

        x = (pwidth - width) / 2 + x;
        y = (pheight - height) / 2 + y;

        gtk_window_move(GTK_WINDOW(dialog), x, y);
        gtk_widget_show(dialog);
}

Is there a better way to actually get the parent window parameters without having to resort to a global GtkWindow variable?

Cheers,
Alex.
--
http://www.munted.org.uk

Go fly your cat today!
_______________________________________________

gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux