X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-buttonbox.c;h=4552210729df4dd15243d30c47fcd497f567eee9;hb=30f20a0669fbab0a8b2ab0b49bb476c40aadd417;hp=da39e0867d3968fbf927fb6c47cafdaf634aad20;hpb=97a777315ec2f2000ac67da1f405323a5e2294e2;p=pspp-builds.git diff --git a/src/ui/gui/psppire-buttonbox.c b/src/ui/gui/psppire-buttonbox.c index da39e086..45522107 100644 --- a/src/ui/gui/psppire-buttonbox.c +++ b/src/ui/gui/psppire-buttonbox.c @@ -225,6 +225,31 @@ refresh_clicked (GtkWidget *w, gpointer data) } + +static void +on_validity_change (GtkWidget *toplevel, gboolean valid, gpointer data) +{ + PsppireButtonBox *bb = data; + + /* Set the sensitivity of all the 'executive order' buttons */ + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_OK]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_PASTE]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_GOTO]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_CONTINUE]), valid); +} + +static void +on_realize (GtkWidget *buttonbox, gpointer data) +{ + GtkWidget *toplevel = gtk_widget_get_toplevel (buttonbox); + + if ( PSPPIRE_IS_DIALOG (toplevel)) + { + g_signal_connect (toplevel, "validity-changed", + G_CALLBACK (on_validity_change), buttonbox); + } +} + static void psppire_button_box_init (PsppireButtonBox *bb) { @@ -299,6 +324,8 @@ psppire_button_box_init (PsppireButtonBox *bb) g_value_unset (&value); } + + g_signal_connect (bb, "realize", G_CALLBACK (on_realize), NULL); }