X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-buttonbox.c;h=18ce4a0dd1a01c33b979368f6c0c915d820d46b1;hb=f1ae4ee2876bee191b1bf79672d4bf834750c227;hp=87989cf12bfc76e4a6ccf8f57714afea41a93437;hpb=3dd0f6ae0d5eb73a2270a243e443c4ae03c2c16e;p=pspp diff --git a/src/ui/gui/psppire-buttonbox.c b/src/ui/gui/psppire-buttonbox.c index 87989cf12b..18ce4a0dd1 100644 --- a/src/ui/gui/psppire-buttonbox.c +++ b/src/ui/gui/psppire-buttonbox.c @@ -73,7 +73,7 @@ set_default (PsppireButtonbox *bb) { int i; - for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i ) + for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i) if (bb->def == (1 << i)) { gtk_widget_set_can_default (bb->button[i], TRUE); @@ -95,7 +95,7 @@ psppire_buttonbox_set_property (GObject *object, { case PROP_BUTTONS: flags = g_value_get_flags (value); - for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i ) + for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i) g_object_set (bb->button[i], "visible", 0x01 & (flags >> i) , NULL); break; @@ -124,12 +124,12 @@ psppire_buttonbox_get_property (GObject *object, switch (prop_id) { case PROP_BUTTONS: - for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i ) + for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i) { gboolean visibility; g_object_get (bb->button[i], "visible", &visibility, NULL); - if ( visibility ) + if (visibility) flags |= (0x01 << i); } @@ -205,7 +205,7 @@ close_and_respond (GtkWidget *w, gint response) /* If we're not in a psppire dialog (for example when in glade) then do nothing */ - if ( ! PSPPIRE_IS_DIALOG (toplevel)) + if (! PSPPIRE_IS_DIALOG (toplevel)) return; dialog = PSPPIRE_DIALOG (toplevel); @@ -267,7 +267,7 @@ refresh_clicked (GtkWidget *w, gpointer data) GtkWidget *toplevel = gtk_widget_get_toplevel (w); PsppireDialog *dialog; - if ( ! PSPPIRE_IS_DIALOG (toplevel)) + if (! PSPPIRE_IS_DIALOG (toplevel)) return; dialog = PSPPIRE_DIALOG (toplevel); @@ -281,7 +281,7 @@ help_clicked (GtkWidget *w, gpointer data) GtkWidget *toplevel = gtk_widget_get_toplevel (w); PsppireDialog *dialog; - if ( ! PSPPIRE_IS_DIALOG (toplevel)) + if (! PSPPIRE_IS_DIALOG (toplevel)) return; dialog = PSPPIRE_DIALOG (toplevel); @@ -301,19 +301,37 @@ on_validity_change (GtkWidget *toplevel, gboolean valid, gpointer data) gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_CONTINUE]), valid); } +static gboolean +on_key_press (GtkWidget *w, GdkEventKey *e, gpointer ud) +{ + PsppireButtonbox *bb = PSPPIRE_BUTTONBOX (ud); + if (e->keyval == GDK_KEY_Escape) + { + g_signal_emit_by_name (bb->button[PSPPIRE_BUTTON_CANCEL], "activate"); + g_signal_emit_by_name (bb->button[PSPPIRE_BUTTON_CLOSE], "activate"); + } + return FALSE; +} + + static void on_realize (GtkWidget *buttonbox, gpointer data) { GtkWidget *toplevel = gtk_widget_get_toplevel (buttonbox); - if ( PSPPIRE_IS_DIALOG (toplevel)) + if (PSPPIRE_IS_DIALOG (toplevel)) { g_signal_connect (toplevel, "validity-changed", G_CALLBACK (on_validity_change), buttonbox); + + g_signal_connect (toplevel, "key-press-event", + G_CALLBACK (on_key_press), buttonbox); } + set_default (PSPPIRE_BUTTONBOX (buttonbox)); } + static void psppire_button_box_init (PsppireButtonbox *bb) { @@ -391,7 +409,7 @@ psppire_button_box_init (PsppireButtonbox *bb) flags = g_value_get_flags (&value); - for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i ) + for (i = 0 ; i < n_PsppireButtonboxButtons ; ++i) g_object_set (bb->button[i], "visible", 0x01 & (flags >> i) , NULL); g_value_unset (&value);