From 10d3b73d339a177f9fba680bc9aae70c77d2a3bb Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 26 Sep 2015 14:09:27 +0100 Subject: [PATCH] Make sure Escape terminates the About box. I think it only did so in GTK2 by virtue of the About box being a GtkDialog. But in GTK3 I've abandoned GtkDialog for not being flexible enough, so I have to process the Escape key myself. --- unix/gtkdlg.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/unix/gtkdlg.c b/unix/gtkdlg.c index 9c162350..a1d72a84 100644 --- a/unix/gtkdlg.c +++ b/unix/gtkdlg.c @@ -3585,6 +3585,15 @@ static void about_close_clicked(GtkButton *button, gpointer data) aboutbox = NULL; } +static void about_key_press(GtkWidget *widget, GdkEventKey *event, + gpointer data) +{ + if (event->keyval == GDK_KEY_Escape && aboutbox) { + gtk_widget_destroy(aboutbox); + aboutbox = NULL; + } +} + static void licence_clicked(GtkButton *button, gpointer data) { char *title; @@ -3673,6 +3682,9 @@ void about_box(void *window) our_dialog_add_to_content_area(GTK_WINDOW(aboutbox), w, FALSE, FALSE, 5); gtk_widget_show(w); + g_signal_connect(G_OBJECT(aboutbox), "key_press_event", + G_CALLBACK(about_key_press), NULL); + set_transient_window_pos(GTK_WIDGET(window), aboutbox); gtk_window_set_transient_for(GTK_WINDOW(aboutbox), GTK_WINDOW(window));