Commit Graph
896 Commits
Author SHA1 Message Date
Hari Rana 4ae0997c3f views/month-view-row: Focus first and last event widgets
This also creates the FocusEventData struct, which stores
relevant information to compare and contrast event widgets.
2026-02-24 20:44:51 -03:00
Hari Rana 08e8318889 views/month-view: Allow navigating with Tab
This also notifies if keyboard navigation fails.
2026-02-24 20:05:15 -03:00
Automeris naranja 6950324d17 calendars-page: Port to AdwPreferencesPage
This simplifies the UI code a bit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/446>
2026-02-21 21:35:09 -05:00
Fabian Hügel 66a8c6b7ab common/date-chooser: Jump to first day of month on button press
Encode the day in the combined choice value and use the callbacks
introduced in the previous commit to always jump to the first day
of the month when the next/previous month buttons are clicked.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1103
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/369>
2026-02-21 20:22:34 -05:00
Fabian HügelandMaximiliano Sandoval 8af5298e50 event-editor/multi-choice: Add prev/next value callbacks
These callbacks will be used in the next commit to jump to the
first day of the month.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1103
Co-authored-by: Maximiliano Sandoval <msandova@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/369>
2026-02-21 20:22:25 -05:00
Fabian HügelandMaximiliano Sandoval da90b94bbd views/month: Jump to first day of month with PgUp/PgDown
With this we always jump to the first day of the next/previous month
when pressing the PgDown/PgUp key in the month view.

Partially fixes the regression described in
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1103

Co-authored-by: Maximiliano Sandoval <msandova@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/369>
2026-02-21 20:22:15 -05:00
Hari Rana 19171e5540 gui/event-widget: Position event popover to the pointer's
Currently, the event popover will always set its position to the
center of the event widget. This becomes an undesirable behavior
with long(er) event widgets, as clicking the edges will require
the user to physically move their pointer all the way to the
popover, which may be challenging depending on the distance.

This addresses this problematic behavior by positioning the popover
right above the pointer only when the event is a multi-day event,
and when the event widget is not inside a GtkListBox widget.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/677>
2026-02-11 09:49:08 -05:00
parzival 22e5ff6252 calendar: Fix DTEND handling for all-day events in ICS import preview
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/694>
2026-02-10 03:14:03 +00:00
Philipp SandTitouan Real 4e2ed18ffc src/gui: Fade out event widget title label instead of ellipsizing
Co-Authored-By: Titouan Real <titouan.real@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/657>
2026-02-03 17:11:45 -03:00
Philipp SandTitouan Real bd4d503080 src: Add fading label class
Co-Authored-By: Titouan Real <titouan.real@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/657>
2026-02-03 17:11:21 -03:00
mindonwarp b90b99f1bd core: Use GListModel for attendees instead of GSList
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/686>
2026-01-29 23:26:42 +00:00
Zoey Ahmed 272f7fd34f multi-choice: Bind category to tooltip + a11y label
This adds a tooltip to the multi choice buttons, with the text
"Previous/Next (category)". This fixes the warnings in the date
chooser popover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/681>
2026-01-29 02:21:43 +00:00
Zoey Ahmed 42595e4a65 multi-choice: Add prop for category name
This will be binded to both the accessibility label for each multi choice,
as opposed to defining it in GcalDateChooser popover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/681>
2026-01-29 02:21:43 +00:00
Zoey Ahmed f32eae827e calendar-row: Add presentation role to color dot img
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/681>
2026-01-29 02:21:42 +00:00
Zoey Ahmed a38bcf9b68 month-cell: Fix accessibility warnings
* Add a tooltip to the overflow button.
* Change weather icon to have use the presentation accessible role

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1522
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/681>
2026-01-29 02:21:42 +00:00
Sergey Bugaev 55e32cd63a overflow-bin: Fix layout issues
* Fix typos in allocation code that resulted in the wrong orientation's
  size being used.
* Stop pretending this code handles baselines, since it really doesn't.
* Don't directly pass through for_size to the child, that's inconsistent
  with how we clamp the size in the other orientation.

This should fix the "Trying to measure GtkBox 0xf00ba5 for width of 2,
but it needs at least 27" criticals.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/689>
2026-01-29 01:29:20 +00:00
mindonwarp d4a540b5f2 event-editor: Improve l10n for GcalOrganizerRow subtitle summary
Use formatted gettext and provide value placeholders for number of
attendees in the subtitle summary text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/687>
2026-01-29 01:25:49 +00:00
Georges Basile Stavracas Neto 0285dbe04f event-editor/organizer-row: Fix use before NULL check
Fallout from my changes to the previous commit.
2026-01-21 17:04:49 -03:00
mindonwarp f8a9ea1973 event-editor: Add a custom widget for the event organizer row
Move the AdwActionRow for the event organizer into its own widget. In
preparation for further widget customization.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp 79a37917c7 event-editor: Reuse attendees list model in subviews
Store a list model of attendees inside the event editor dialog and use
this model when displaying the details page. The attendees section (like
other sections) gets injected with the event and gets another copy of
the attendees from the event. Both the section and the details page can
now avoid resetting themselves when the underlying data (event) doesn't
change. Note: the details page uses a ListBox for the sake of the UI
style, which can underperform with a lot of attendees (building the
visual tree can be laggy).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp e7d10964e8 event-editor: Extract attendee summary row into a separate widget
Make the summary row reusable and filterable based on the attendee type.
This gives us the possibility to have separate summaries for
people/groups and resources/rooms.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp bf31a02a80 event-editor: Add "show-attendees-detail-page" action
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:54 +00:00
mindonwarp f37cd9e7ad event-editor: Add filter by attendee type for details page
Pre-filter attendees based on type before filtering by response.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:54 +00:00
mindonwarp 4fb5c1ebb3 event-editor: Pass only attendees to the details page instead of event
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:53 +00:00
mindonwarp 0149b7a042 core/editor: Replace g_return_* with g_assert
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:53 +00:00
mindonwarp ba3ca061ce event-editor: Add attendees section and details page
UX/UI designed by Philipp Sauberzweig (@PhilippSauberz).

The event editor dialog is now a NavigationView and the participants
details open in a separate page. Group attendees/participants in
AdwPreferencesGroups and bind groups'
ListBox widgets to backing filter models. These are just "views" into a
single GListStore containing all the event attendees.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:52 +00:00
Maximiliano Sandoval bf922f173c window: Add Ctrl+W shortcut for closing the window
Add the common shortcut as per:
https://developer.gnome.org/hig/reference/keyboard.html#basic-shortcuts
2026-01-16 16:42:22 -05:00
Jean-François Fortin Tam ab76cd59be Create only DISPLAY alarms in reminders, not AUDIO
Creating "AUDIO" VALARM notification actions causes endless problems:
users may only hear a sound notification (with no visuals), if at all,
and most other apps don't honor nor support editing audio-only alarms.
Other systems typically play a sound automatically on "DISPLAY" alarms.

https://datatracker.ietf.org/doc/html/rfc5545#section-3.6.6 says:

> Multiple mutually independent "VALARM" calendar components
> can be specified for a single "VEVENT" or "VTODO" calendar component.

However, each component states:

> 'action' and 'trigger' are both REQUIRED,
> but MUST NOT occur more than once.

To keep the UI simple, we should pick one or the other; "DISPLAY" it is.
Remove "AUDIO" alarm code and add a warning to never add it again.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1280
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/680>
2026-01-16 01:18:28 +00:00
Zoey Ahmed c3635967bc window: Go back/forth views using hardware buttons
Refactor `on_window_previous_date_activated_cb` and
`on_window_next_date_activated_cb` into separate methods for going to
the prev/next view, to be used in the callbacks for both the
forward/back buttons in the UI, and for the `Gtk.GestureClick` callbacks
that listens for the hardware buttons to be pressed.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1494
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/682>
2026-01-15 17:02:17 +00:00
Jean-François Fortin Tam e6a4c204ab gui/calendar-list: Ellipsize long headers labels
This prevents long calendar accounts' names from breaking the whole UI.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1531
2026-01-06 10:53:48 -05:00
Hari Rana 6d47fc1db8 views/month-view-row: Add offset when allocating event widgets
The SEPARATOR_OFFSET constant is for the box shadow property
defined in month cells' CSS. Since the box-shadow property does
not contribute to layout, so these offsets need to be set manually.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676>
2025-12-28 17:04:32 +00:00
Hari Rana b0a5ff18d5 views/month-view-row: Compute exact width of event widgets
Currently, month cells are using `round()` to allocate the width,
whereas event widgets are using implicit double → int conversion,
which causes event widgets to be offset by a pixel, and thus
touches month cells' borders.

This new approach guarantees the exact width of the event widgets
by invoking `round()`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676>
2025-12-28 17:04:32 +00:00
Lukáš Tyrychtr 6c36048ae3 gcal-search-button: Announce number of search results to screen reader
We do not have anything like live regions yet, so put raw announce calls
in the right place.

Fixes #1470.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/675>
2025-12-21 21:52:58 -03:00
Adrien Plazas 9c1a7fecfc week-header: Fix end of week comparison
This fixes comparison of an event to the end of the week, so "end" can't
incorrectly be 7 anymore.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/835

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/672>
2025-12-03 20:50:15 +01:00
Hari Rana 82198e0b8f views/month-view: Smoothen discrete scrolling animation
The current animation duration paired with the ease-out-quad function
eases out imperceptibly fast (almost instantaneously), which makes the
overall animation feel laggy.

This patch addresses the aforementioned issue by increasing the
duration to 500ms. This then makes the ease-out-quad function ease
out relatively slowly, which is addressed by changing the function
to ease-out-quart - a function that eases out much quicker.

As a result, the animation should feel much more fluid and natural,
without giving the impression that it's 3 times slower.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1125
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:59:50 -05:00
Hari Rana 0a8bd0e994 views/month-view: Use ease-out-sine when snapping to row
It should feel a little bit more natural as it is eases out slower.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:59:33 -05:00
Hari Rana bf86699f84 views/month-view: Check for user's reduced motion setting
"gtk-interface-reduced-motion" is the modern alternative to
"gtk-enable-animations" but gtk-enable-animations will be
kept as as a fallback.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:47:20 -05:00
Hari Rana f4702dde1f views/month-view: Remove offset
Since we're now relying on box shadows to render separators,
which don't contribute to layout, we no longer need to set some
sort of offset to compensate the separators.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/669>
2025-11-27 11:52:31 +00:00
Jean-François Fortin Tam e470ecfc25 quick-add-popover: Use semantic typographic wrapping of time ranges
Atomically maintain time ranges on the same line when possible.
This is done using invisible non-breaking whitespace characters.

When selecting a range of time in the week view's timetable,
this ensures eye-pleasing, natural-looking typography.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1503

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/661>
2025-11-19 13:34:54 +00:00
Dimitrios Christidis 938195e6e2 edit-calendar: Remove unnecessary assignment
g_clear_pointer() sets it to NULL.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/662>
2025-11-19 13:04:54 +00:00
FineFindusandKrifa75 2d9afa938f gui/edit-calendar-page: allow exporting calendars
Adds an export option to the edit page, allowing users to export an
entire calendar at once.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/31

Co-authored-by: Krifa75 <yahiaoui.fakhri@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/615>
2025-11-18 15:27:44 +00:00
Hari Rana 81990357fe quick-add-popover: Make rows behave like radio buttons
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:30 -03:00
Hari Rana c624c9b53b quick-add-popover: Rework population and update
This emits the `changed` signal, allowing us to filter out a wider
variety of calendars. It also allows us to remove the loops
that needed to re-run every time the user changed the default
calendar or closed the popover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:29 -03:00
Hari Rana b83498cb1f quick-add-popover: Use calendar row widget
The calendar row widget also makes it easy for us to display
hidden calendars.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:42:39 -03:00
Hari Rana 7e63f5f7e2 calendar-row: Add APIs
Since the calendar row widget is becoming an expandable widget,
several APIs were added to the widget:
- `gcal_calendar_row_get_calendar`
- `gcal_calendar_row_add_suffix`
- `gcal_calendar_row_get_first_suffix_child`
- `gcal_calendar_row_add_header_class`
- `gcal_calendar_row_remove_header_class`

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:18 -03:00
Hari Rana f8c5751174 calendar-row: Rename calendar-combo-row-item to calendar-row
Currently, the quick add popover implements its own row
widget for each calendar, which duplicates tons of unnecessary
code. This commit streamlines the calendar-combo-row-item row
widget to make it reusable elsewhere.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:07 -03:00
Hari Rana 324bde2c72 quick-add-popover: Port to libadwaita widgets and merge stack pages
Both stack pages are merged into one page to avoid additional
cycling through pages.

`GtkListBoxRow`s were replaced by `AdwActionRow`s with
`GtkCheckBox`es as children.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/90,
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1003

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:33:23 -03:00
Hari Rana ac6cccee53 quick-add-popover: Port to GListModel
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:31:24 -03:00
Georges Basile Stavracas Neto 564ce76349 views/month: Don't manually set can-focus property
Now that we're meddling with child visibility, hidden rows shouldn't
be focusable. At least that's what Hari discovered :)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/659>
2025-11-08 22:02:49 -03:00
Georges Basile Stavracas Neto 084a495f5c views/month: Hide invisible rows
Change the child-visible property of rows when allocating. It's safe
to do in allocation because it doesn't affect layout, just rendering.

Related:
https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/402

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/659>
2025-11-08 21:18:55 -03:00