From 1ab336009ea5ff39815b0b220914506533488d9a Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Mon, 25 Aug 2025 17:36:28 -0600 Subject: [PATCH] views/month-view: Skip view when tabbing in event widget Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1444 --- src/gui/views/gcal-month-view.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gui/views/gcal-month-view.c b/src/gui/views/gcal-month-view.c index 6ad91738..e77b03d1 100644 --- a/src/gui/views/gcal-month-view.c +++ b/src/gui/views/gcal-month-view.c @@ -1322,13 +1322,19 @@ static gboolean gcal_month_view_focus (GtkWidget *widget, GtkDirectionType direction) { - GtkWidget *focus_child; - gboolean forward_or_backward; + GtkRoot *root; + GtkWidget *focused; + gboolean forward_or_backward, is_event_widget, is_ancestor; + + root = gtk_widget_get_root (widget); + focused = gtk_root_get_focus (root); + + is_event_widget = GCAL_IS_EVENT_WIDGET (focused); + is_ancestor = !!gtk_widget_is_ancestor (focused, widget); - focus_child = gtk_widget_get_focus_child (widget); forward_or_backward = direction == GTK_DIR_TAB_FORWARD || direction == GTK_DIR_TAB_BACKWARD; - if ((focus_child && forward_or_backward) || (!focus_child && !forward_or_backward)) + if ((is_event_widget && forward_or_backward) || !(is_ancestor || forward_or_backward)) return FALSE; GTK_WIDGET_CLASS (gcal_month_view_parent_class)->focus (widget, direction);