X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog.c;h=918cae0ec1a1b305abe41383c6ad858c9b78e453;hb=2d82411f69f2a87a04ed22de78717bacf7d342de;hp=b006222a6199495a44eb29aecc0eb1409581161c;hpb=32680e29683e685117eaeda0dd40ebe557f84336;p=pspp diff --git a/src/ui/gui/psppire-dialog.c b/src/ui/gui/psppire-dialog.c index b006222a61..918cae0ec1 100644 --- a/src/ui/gui/psppire-dialog.c +++ b/src/ui/gui/psppire-dialog.c @@ -296,13 +296,6 @@ psppire_dialog_notify_change (PsppireDialog *dialog) } -static void -remove_notify_handlers (PsppireDialog *dialog, GObject *sel) -{ - g_signal_handlers_disconnect_by_data (sel, dialog); -} - - /* Descend the widget tree, connecting appropriate signals to the psppire_dialog_notify_change callback */ static void @@ -341,6 +334,8 @@ connect_notify_signal (GtkWidget *w, gpointer data) g_signal_connect_swapped (w, "de-selected", G_CALLBACK (psppire_dialog_notify_change), dialog); + + psppire_selector_update_subjects (PSPPIRE_SELECTOR (w)); } if ( GTK_IS_EDITABLE (w)) @@ -389,8 +384,6 @@ connect_notify_signal (GtkWidget *w, gpointer data) G_CALLBACK (psppire_dialog_notify_change), dialog); - g_signal_connect (dialog, "destroy", G_CALLBACK (remove_notify_handlers), - model); } g_signal_connect_swapped (selection, "changed", @@ -422,7 +415,7 @@ psppire_dialog_run (PsppireDialog *dialog) if (title == NULL) g_warning ("PsppireDialog %s has no title", gtk_widget_get_name (GTK_WIDGET (dialog))); - + if ( dialog->contents_are_valid != NULL ) gtk_container_foreach (GTK_CONTAINER (gtk_bin_get_child(GTK_BIN(dialog))), connect_notify_signal, @@ -431,15 +424,9 @@ psppire_dialog_run (PsppireDialog *dialog) dialog->loop = g_main_loop_new (NULL, FALSE); gtk_widget_show (GTK_WIDGET (dialog)); + psppire_dialog_notify_change (dialog); - if ( dialog->contents_are_valid != NULL) - g_signal_emit (dialog, signals [VALIDITY_CHANGED], 0, FALSE); - - g_signal_emit (dialog, signals [DIALOG_REFRESH], 0); - - gdk_threads_leave (); g_main_loop_run (dialog->loop); - gdk_threads_enter (); g_main_loop_unref (dialog->loop);