From 486c40048b99df134f078f26ac973d8bcacc151c Mon Sep 17 00:00:00 2001 From: "Geoffrey D. Bennett" Date: Fri, 23 Feb 2024 03:42:56 +1030 Subject: [PATCH] Make window-helper.c close the window when Esc is pressed Fixes #102. --- src/window-helper.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/window-helper.c b/src/window-helper.c index fc7e98c..274bc2d 100644 --- a/src/window-helper.c +++ b/src/window-helper.c @@ -12,6 +12,25 @@ gboolean window_startup_close_request(GtkWindow *w, gpointer data) { return true; } +static gboolean on_key_press( + GtkEventControllerKey *controller, + guint keyval, + guint keycode, + GdkModifierType state, + gpointer user_data +) { + GtkWidget *widget = gtk_event_controller_get_widget( + GTK_EVENT_CONTROLLER(controller) + ); + + if (keyval == GDK_KEY_Escape) { + gtk_window_close(GTK_WINDOW(widget)); + return 1; + } + + return 0; +} + GtkWidget *create_subwindow( struct alsa_card *card, const char *name, @@ -24,6 +43,12 @@ GtkWidget *create_subwindow( gtk_window_set_title(GTK_WINDOW(w), title); g_signal_connect(w, "close_request", G_CALLBACK(close_callback), card); + GtkEventController *key_controller = gtk_event_controller_key_new(); + gtk_widget_add_controller(w, key_controller); + g_signal_connect( + key_controller, "key-pressed", G_CALLBACK(on_key_press), NULL + ); + g_free(title); return w; }