Self destructing dialog question

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

 



I have a small problem that's been bothering me for a while and I have yet to find an elegant solution to it. The problem is related to the notification of the destruction of a dialog window.

Assume I have a program with a widget MyApp that has a member called my_dialog that is created to catch its destruction as follows:

if (!priv->my_dialog) {
    priv->my_dialog = my_dialog_new();

    g_signal_connect(priv->my_dialog, "delete-event",
                     G_CALLBACK(cb_my_dialog_destroy), priv);
}
:

static gboolean cb_my_dialog_destroy(GtkWidget *widget,
                                     GdkEvent *event,
                                     gpointer data)
{
    MyAppPriv *priv = MY_APP_PRIV(data);
    priv->my_dialog = NULL;
    return FALSE;
}

I.e. when the dialog is deleted we would like to clear the priv->my_dialog variable. (Of course I could hide the dialog on delete, but I would like to destroy it.)

The MyDialog class inherits from GtkDialog and it creates a dialog button "Close" that is handled in the response callback. So in MyDialog I override the "response" signal handler and when we get the response==GTK_RESPONSE_CLOSE we self destruct by calling gtk_widget_destroy(widget).

But here's the problem, because destroying a widget does not generate a "delete-event" and thus cb_my_dialog_destroy is never called and thus priv->my_dialog is never set to NULL.

Meanwhile I have solved it by overriding the the response signal in MyApp, but I feel that is ugly as I would like to keep the functionality of MyDialog self contained.

Other possible solutions would be to emit a "delete-event"  in MyDialog. But my attempts to call g_signal_emit_by_name(widget, "delete-event", NULL, &retval) have caused the program to crash.

Another solution would be to create yet another signal.

Trying to connect to the "destroy-event" in MyApp didn't work. I never got any callback.

So how should this be done?

Thanks!
Dov

_______________________________________________
gtk-list mailing list
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