[Glade-users] Reusing windows/dialogs after user closes them with 'X'



On Wed, 2004-11-24 at 21:34 -0500, Dale wrote:
I can't figure this one out.

If a user closes a dialog or popup window with the 'X' in the
top-right of the window, it destroys the window.

I have the destroy event signal, but I can't stop it from actually
destroying it (or can I?).  I've tried putting a ->hide_all in the
event loop to hide instead of destroy, but it's already destroyed.

What I would like to know is, how can I reuse the window/dialog?

In the case of a window you would catch the "delete-event" signal on the
window and in the callback you would hide the window and return TRUE.
This will prevent the destroy event being emitted.  For example:

gint
main (gint argc, gchar *argv[])
{
        GtkWidget *window;

        ...

        g_signal_connect (G_OBJECT (window), "delete-event",
                G_CALLBACK (delete_event_cb), NULL);

        ...
}

gboolean
delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
{
        gtk_widget_hide (widget);
        return TRUE;
}


For a dialog you would normally use gtk_dialog_run and have
responsibility for hiding or destroying the dialog yourself.  For
example:

GtkWidget *dialog
gint result;

...

gtk_widget_show_all (dialog);

result = gtk_dialog_run (GTK_DIALOG (dialog));
switch (result) {
        case GTK_RESPONSE_ACCEPT:
                /* Do something here */
                break;
        default:
                break;
}
gtk_widget_hide (dialog);


Hope this helps,

Keith.





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