diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-17 23:54:46 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-17 23:54:46 -0300 |
commit | 5d9d0dec7c360133ddeda61526a6c81ac04b425a (patch) | |
tree | fd84a41bdfaf9a01805bce8fc240af545cb80adb | |
parent | 6df87fb5c13953a2ee2527f1ebff7a3c1444021c (diff) | |
download | gnome-calendar-5d9d0dec7c360133ddeda61526a6c81ac04b425a.tar.gz |
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
-rw-r--r-- | src/gui/gcal-event-popover.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gui/gcal-event-popover.c b/src/gui/gcal-event-popover.c index a1bc1161..9561cf89 100644 --- a/src/gui/gcal-event-popover.c +++ b/src/gui/gcal-event-popover.c @@ -559,6 +559,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: * |