On Fri, May 16, 2008 at 3:19 PM, John M Collins <[EMAIL PROTECTED]> wrote: > I want to have a "do you really want to do this" type question and I'm > trying to use a message dialog thus: > > GtkWidget *dlg = gtk_message_dialog_new(GTK_WINDOW(previous), > GTK_DIALOG_DESTROY_WITH_PARENT, > GTK_MESSAGE_QUESTION, > GTK_BUTTONS_YES_NO, "Are you sure?"); > g_signal_connect_swapped(dlg, > "response", G_CALLBACK(gtk_widget_destroy), dlg); > > Then I put > > if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_YES) { > > /* Do the thing we asked about */ > } > else { > /* Get out of here */ > } > > > the return value from gtk_dialog_run is never GTK_RESPONSE_YES, it's > always zero whether the Yes or No button is clicked. > > However if I get rid of the "response" signal and put > > retval = gtk_dialog_run(GTK_DIALOG(dlg)); > gtk_widget_destroy(dlg); > > if (retval == GTK_RESPONSE_YES) { > > /* Do stuff */ > } > else { > /* Get out of here */ > } > > It works OK. > > "Is this a bug or a feature"?
It is a feature, and of the kind that bears to similarity to a bug. You do not need to use gtk_signal_connect to connect to the "response" signal if you are using the standard interface: it is already connected. By connecting, you are probably destroying the dialog before the value can be read, and it is surprinsing that you do not get some random garbage. _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list