55d9cc68bcb9614b7c919214a9e3ec6e7d77421b
Instead of having the `GtkListView` create a row for each day containing their own internal `GtkListBox` to store the event widgets, move the creation of event widgets to the `GtkListView`'s item factory. The motivation for this change is having internal listbox's inside a `GtkListView` is problematic for keyboard navigation, because the user can either: - The event widgets in the internal listbox's can not be activated by pressing Space/Enter on a focused event widget if the listbox row's are set to be focusable. - If the internal listbox's rows are set to be unfocusable, the user is not able to navigate the event widgets using the arrow keys, Page Up/Down or Home/End. To use `GtkListView:factory` to generate the event widgets, we first wrap the filtered day model inside the list view around a `GtkFlattenListModel` to concatenate all the containing `GcalAgendaViewItem` (which contain a given event and the date it occurs on) in the day models together. This gives us a model of all events that can be turned into event widgets, and a model of day sections to create headers for each day in the next commit. This approach was taken because we do not get the activated row widget, unlike with the previously used `GtkListBox` where the row widget is passed as an argument in `::row-activated`, and there is no feasible other way to obtain the correct event widget from a `GtkListView`. Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/809>
Installation
Links
- Homepage: apps.gnome.org/Calendar
- Report an issue: gitlab.gnome.org/GNOME/gnome-calendar/issues
- Donate: donate.gnome.org
- Translate: l10n.gnome.org/module/gnome-calendar
- Contact: matrix.to/#/#gnome-calendar:gnome.org
Contributing
For information on how to contribute, please check CONTRIBUTING.md and HACKING.md.
Languages
C
97.6%
Meson
1.2%
CSS
0.7%
Python
0.3%
Shell
0.2%
