Make window-helper.c close the window when Esc is pressed

Fixes #102.
This commit is contained in:
Geoffrey D. Bennett
2024-02-23 03:42:56 +10:30
parent 84ad0484f9
commit 486c40048b

View File

@@ -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;
}