@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user