disabled immunity to alt+f4

This commit is contained in:
Martin Dvořák 2026-09-03 19:27:19 +02:00
commit 31e812aaf7

View file

@ -1,4 +1,5 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <math.h>
#define NUM_UNITS 12
@ -27,6 +28,28 @@ static void on_continue_clicked(GtkButton *button, gpointer user_data) {
gtk_stack_set_visible_child_name(main_stack, "roadmap");
}
static gboolean on_window_key_pressed(GtkEventControllerKey *controller,
guint keyval, guint keycode,
GdkModifierType state,
gpointer user_data) {
GtkWindow *window = user_data;
(void)controller;
(void)keycode;
if ((keyval == GDK_KEY_q &&
(state & (GDK_SUPER_MASK | GDK_META_MASK)) != 0) ||
(keyval == GDK_KEY_F4 &&
(state & GDK_ALT_MASK) != 0)) {
GtkApplication *app = gtk_window_get_application(window);
if (app != NULL)
g_application_quit(G_APPLICATION(app));
return GDK_EVENT_STOP;
}
return GDK_EVENT_PROPAGATE;
}
static GtkWidget *build_welcome_page(void) {
GtkWidget *box;
GtkWidget *heading;
@ -226,6 +249,7 @@ static void activate(GtkApplication *app, gpointer user_data) {
GtkWidget *title_label;
GtkWidget *welcome_page;
GtkWidget *roadmap_page;
GtkEventController *keys;
GtkCssProvider *provider;
// Create a new application window
@ -255,6 +279,13 @@ static void activate(GtkApplication *app, gpointer user_data) {
gtk_stack_add_named(main_stack, roadmap_page, "roadmap");
gtk_stack_set_visible_child_name(main_stack, "welcome");
keys = gtk_event_controller_key_new();
gtk_event_controller_set_propagation_phase(GTK_EVENT_CONTROLLER(keys),
GTK_PHASE_CAPTURE);
g_signal_connect(keys, "key-pressed",
G_CALLBACK(on_window_key_pressed), window);
gtk_widget_add_controller(GTK_WIDGET(window), GTK_EVENT_CONTROLLER(keys));
// Load Catppuccin Mocha CSS
provider = gtk_css_provider_new();
gtk_css_provider_load_from_string(provider,