event-popover: Set better default focus widget

When mapped, move focus to either the first meeting row - if any - or
to the edit button.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/980
This commit is contained in:
Georges Basile Stavracas Neto
2023-03-17 23:54:46 -03:00
parent 6df87fb5c1
commit 5d9d0dec7c
+24
View File
@@ -558,6 +558,28 @@ on_time_format_changed_cb (GcalEventPopover *self)
}
/*
* GtkWidget overrides
*/
static void
gcal_event_popover_map (GtkWidget *widget)
{
GcalEventPopover *self = (GcalEventPopover *) widget;
GtkListBoxRow *first_meeting_row;
GTK_WIDGET_CLASS (gcal_event_popover_parent_class)->map (widget);
first_meeting_row = gtk_list_box_get_row_at_index (self->meetings_listbox, 0);
g_message ("Meeting row: %p (%s)", first_meeting_row, first_meeting_row ? G_OBJECT_TYPE_NAME (first_meeting_row) : "none");
if (first_meeting_row)
gtk_widget_grab_focus (GTK_WIDGET (first_meeting_row));
else
gtk_widget_grab_focus (self->edit_button);
}
/*
* GObject overrides
*/
@@ -636,6 +658,8 @@ gcal_event_popover_class_init (GcalEventPopoverClass *klass)
object_class->get_property = gcal_event_popover_get_property;
object_class->set_property = gcal_event_popover_set_property;
widget_class->map = gcal_event_popover_map;
/**
* GcalEventPopover::context:
*