Index: w/gtk+-2/pinentry-gtk-2.c =================================================================== --- w/gtk+-2/pinentry-gtk-2.c +++ w/gtk+-2/pinentry-gtk-2.c @@ -24,6 +24,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#include #include #include #include @@ -200,18 +201,30 @@ static void enter_callback (GtkWidget *widget, GtkWidget *anentry) { - button_clicked (widget, "ok"); + button_clicked (widget, (gpointer) CONFIRM_OK); } static void confirm_button_clicked (GtkWidget *widget, gpointer data) { - confirm_value = (int) data; + confirm_value = (confirm_value_t) data; gtk_main_quit (); } +static void +cancel_callback (GtkAccelGroup *acc, GObject *accelerable, + guint keyval, GdkModifierType modifier, gpointer data) +{ + int confirm_mode = (int) data; + if (confirm_mode) + confirm_button_clicked (GTK_WIDGET (accelerable), (gpointer) CONFIRM_CANCEL); + else + button_clicked (GTK_WIDGET (accelerable), (gpointer) CONFIRM_CANCEL); +} + + static gchar * pinentry_utf8_validate (gchar *text) { @@ -288,6 +301,7 @@ GtkWidget *win, *box; GtkWidget *wvbox, *chbox, *bbox; GtkAccelGroup *acc; + GClosure* acc_cl; gchar *msg; tooltips = gtk_tooltips_new (); @@ -481,6 +495,11 @@ G_CALLBACK (confirm_mode ? confirm_button_clicked : button_clicked), (gpointer) CONFIRM_CANCEL); + + acc_cl = g_cclosure_new (G_CALLBACK (cancel_callback), + (gpointer) confirm_mode, NULL); + gtk_accel_group_connect (acc, GDK_KEY_Escape, 0, 0, acc_cl); + GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT); }