From cd0138393f7fe4d2a7ea0e5cba043e49ba1ac389 Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Fri, 6 Feb 2026 09:11:09 -0500 Subject: [PATCH] views/month-cell: Add activate signal This will be needed for keyboard navigation. Part-of: --- src/gui/views/gcal-month-cell.blp | 1 + src/gui/views/gcal-month-cell.c | 35 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/gui/views/gcal-month-cell.blp b/src/gui/views/gcal-month-cell.blp index 0fbfffad..5ccc4c94 100644 --- a/src/gui/views/gcal-month-cell.blp +++ b/src/gui/views/gcal-month-cell.blp @@ -9,6 +9,7 @@ template $GcalMonthCell: Widget { } accessible-role: grid_cell; + receives-default: true; focusable: true; Adw.BreakpointBin breakpoint_bin { diff --git a/src/gui/views/gcal-month-cell.c b/src/gui/views/gcal-month-cell.c index 60d4eec7..a2c61919 100644 --- a/src/gui/views/gcal-month-cell.c +++ b/src/gui/views/gcal-month-cell.c @@ -62,6 +62,7 @@ G_DEFINE_TYPE (GcalMonthCell, gcal_month_cell, GTK_TYPE_WIDGET) enum { SHOW_OVERFLOW, + ACTIVATE, N_SIGNALS }; @@ -441,6 +442,40 @@ gcal_month_cell_class_init (GcalMonthCellClass *klass) 1, GTK_TYPE_WIDGET); + signals[ACTIVATE] = g_signal_new ("activate", + GCAL_TYPE_MONTH_CELL, + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + gtk_widget_class_set_activate_signal (widget_class, signals[ACTIVATE]); + + { + g_autoptr (GtkShortcutAction) activate_action = NULL; + const guint activate_keyvals[] = { + GDK_KEY_space, + GDK_KEY_KP_Space, + GDK_KEY_Return, + GDK_KEY_ISO_Enter, + GDK_KEY_KP_Enter, + }; + + activate_action = gtk_signal_action_new ("activate"); + + for (size_t i = 0; i < G_N_ELEMENTS (activate_keyvals); i++) + { + g_autoptr (GtkShortcut) activate_shortcut = NULL; + + activate_shortcut = gtk_shortcut_new (gtk_keyval_trigger_new (activate_keyvals[i], 0), + g_object_ref (activate_action)); + + gtk_widget_class_add_shortcut (widget_class, activate_shortcut); + } + } + properties[PROP_CONTEXT] = g_param_spec_object ("context", "Context", "The GcalContext of the application",