Commit Graph
3309 Commits
Author SHA1 Message Date
Alistair Francis 6c09758633 event-popover: Support the maps URI for opening locations
Open gnome-maps (or other map application) when clicking on a map icon
next to the location address.

Resolves: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/326
Signed-off-by: Alistair Francis <alistair@alistair23.me>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/590>
2026-04-09 12:04:11 +00:00
Jake Dane b0321c369d Replace style-*.css with media queries
Libadwaita 1.9 deprecates using style-dark.css, style-hc-dark.css and
style-hc.css. This moves these styles into style.css and conditionally
loads them using media queries.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/745>
2026-04-08 12:19:18 +00:00
Hari Rana 92b74849bf views/month-cell: Add AdwBin as parent to methods retrieving height of widget
This is future-proofing the uncertain decision of removing
GtkWidget's `margin-*` properties in the future, which is what
we're currently using to retrieve the height of certain widgets.

Whenever the intention is to get the entire size of a particular
widget, including properties that contribute to layout such as
margins, the `get_width()`/`get_height()` methods don't include
these properties during calculations. However, getting the size
of the parent widget will include them in its entirety.

As such, the safest path is to use AdwBin as the parent to the
respective widgets, and using it to retrieve the height.

See: <https://gitlab.gnome.org/GNOME/gtk/-/issues/6556#note_2056432>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/739>
2026-04-03 16:37:14 -04:00
Hari Rana 9f8faf0db0 data: Add agenda view screenshot
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/718>
2026-04-01 11:20:44 +00:00
Hari Rana 49e0521b67 views/week-view: Adapt to high contrast
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/710>
2026-03-31 21:55:32 -04:00
Joshua Brot 1baefcc465 gui: Run Blueprint formatter
Reformatting blueprints to align with the updated formatter.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/736>
2026-03-27 18:16:29 -04:00
Zoey Ahmed fbfacb6972 gui/blueprint: Drop unneeded casts to built-ins
Blueprint can now "infer" the type a closure returns, as long as it is
not the property of a custom GType, so some of the casts (e.g. `as
<string>`) will not be necessary anymore

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/733>
2026-03-24 16:43:10 +00:00
Hari Rana c0063f29c8 calendar-management/calendars-page: Delete calendar during unmapping
The previous commit reintroduced
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1270

In order to solve this without destroying the dialog,
the calendar is forcefully deleted when unmapping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
Hari Rana 98a993de4d gui/window: Reuse calendar management dialog
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
Hari Rana 8012dc4404 calendar-management/calendar-management-dialog: Replace hide() override with unmap()
`hide()` stopped working since we ported to AdwDialog. We certainly
don't want to override the `close()` virtual method from AdwDialog,
as page transitions begin while the dialog is closing. Instead,
we can override `unmap()`, which will do it at the very end.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
Hari Rana 48e86c7f3d search/search-engine: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana e0250064f6 core/shell-search-provider: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana 088d826c34 gui/importer: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana b5d12237d5 gui/window: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana dc4cfe4ecf core/manager: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:03 +00:00
Hari Rana 4e9ea9cd51 core/timeline: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:03 +00:00
Hari Rana 170bed7755 gui/event-popover: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00
Hari Rana 037ffd3700 gui/event-widget: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00
Hari Rana 3c9a525710 gui/calendar-management: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00
Hari Rana 3f486c2ccc gui/search-button: Replace "context" property with context getter method
This is the last remaining widget whose `context` property was bound
to GcalWindow's on construction and was null-asserted before
setting the value, making the FIXME comment unnecessary.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1463
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00
Hari Rana c7c5d49b14 gui/sync-indicator: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:01 +00:00
Hari Rana 0e73034ffe gui/quick-add-popover: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:01 +00:00
Hari Rana 9b4c166a18 event-editor/event-editor-dialog: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:01 +00:00
Hari Rana f44a1ee942 event-editor/event-editor-section: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana 669906c601 event-editor/summary-section: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana b979ea05b5 event-editor/schedule-section: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana 7bcb78b6ae event-editor/reminders-section: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana aafbd71ced event-editor/notes-section: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana a51b65f5f7 event-editor/attendees-section: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana 15a7a8cbd2 views/view: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana ccd3e5cae3 common/date-chooser: Replace "context" method with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana 5616ba2c03 views/agenda-view: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana cebd3cd84d views/month-view: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:00 +00:00
Hari Rana d9f02cee20 views/week-view: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:29:59 +00:00
Hari Rana a687d8f10b gui/weather-settings: Replace "context" with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:29:59 +00:00
Hari Rana af30d8c43f gui/calendar-list: Replace "context" with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:29:58 +00:00
Hari Rana a84cf3aed9 utils: Add macro for getting default application
This will be needed as a replacement for the removal of the
"context" property on every object.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:29:58 +00:00
Zoey Ahmed 2300ed29cd notes: Add placeholder text if notes section empty
Move the textview box into an overlay, with a label as the overlay
child,
that appears only when the textview is empty, and remove the "Notes"
title for the preference group with the notes row in the event dialog.

This better indicates the notes is an input field to the user, compared
to the design before.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1081
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/714>
2026-03-23 18:25:12 +00:00
Hari Rana 855fea34bf window: Only clear last_focused_widget if the widget has been focused
When opening the event editor dialog as a new event, `set_new_event_mode()`
immediately tries to focus the last focused widget, which won't work
because it is unfocusable. `focus_last_focused_widget()` then clears
clears the pointer regardless of whether the widget has successfully
grabbed focus or not. So, we want to only clear focus if the widget
has successfully grabbed focus.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1566
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/730>
2026-03-22 20:19:54 +00:00
Hari Rana 3c94e255ac window: Grab focus after closing Event Editor dialog
Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1566
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/730>
2026-03-22 20:19:54 +00:00
Hari Rana d0bdc9f2af gui/month-view-row: Add upward variable
`!downward` is disambiguous and could merely be interpreted
as "not downward and not upward either". The `upward` variable
is explicit and describes literally the condition.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/729>
2026-03-21 10:39:16 -04:00
Hari Rana b75c44795e gui/meeting-row: Unset maximum width characters
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/728>
2026-03-20 11:27:54 -04:00
Hari Rana 4f067eeec7 gui/event-popover: Unset maximum width characters
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/728>
2026-03-20 11:27:54 -04:00
Hari RanaandJamie Gravendeel ec5884fcce gui/event-popover: Wrap content inside AdwClamp widget
The event popover contains a lot of text in different sizes, which
pushes us to magic-number the maximum amount of characters
(i.e. `max-width-chars`) and hope that all is well.

This approach addresses that by simply clamping the parent widget
to the desired size, allowing us to remove all instances
of `max-width-chars`.

Do note that `Adw.Clamp:tightening-threshold` is set to 400 by default,
which technically doesn't need to bind to `Adw.Clamp:maximum-size` at
the moment, but I decided to do it anyway in case we want to change
`Adw.Clamp:maximum-size` in the future and can't figure out why
the margins are off.

Co-authored-by: Jamie Gravendeel <me@jamie.garden>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/728>
2026-03-20 11:24:47 -04:00
Abdullahi Usman 24621b4d2b agenda-view: Respect local timezone
convert events' time to equivalent local time before sorting.

fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1324
2026-03-17 20:09:23 -03:00
Georges Basile Stavracas Neto ff4d7f7d59 50.0 2026-03-14 12:24:48 -03:00
Hari Rana 39cee3cbc3 event-editor/multi-choice: Check if destructor exists before clearing
Without this check, the app supposedly crashes when we close it.

GtkListBox frees itself the same way.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/723>
2026-03-12 01:12:29 +00:00
Zoey Ahmed f99678aea9 views/month-view: Check if focused widget is month cell
This fixes an issue where pressing Shift + Up/Down while focused on the
overflow button will result in a bail out when asserting the focused
widget has a month cell ancestor:

```
GcalMonthView:ERROR:../src/gui/views/gcal-month-view.c:1002:on_key_controller_key_pressed_cb: assertion failed: (GCAL_IS_MONTH_CELL (month_cell))
Bail out! GcalMonthView:ERROR:../src/gui/views/gcal-month-view.c:1002:on_key_controller_key_pressed_cb: assertion failed: (GCAL_IS_MONTH_CELL (month_cell))
```

When navigating between month cells with a keyboard, focus is set
on respective month cells, so checking whether the ancestor
is a month cell or not is not only unnecessary, it also causes
bugs like the assertion above.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/720>
2026-03-11 08:55:09 -04:00
Georges Basile Stavracas Neto 0c1636b7aa gui/multi-choice: Use g_clear_pointer more
Just a cosmetic improvement.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/721>
2026-03-10 20:45:35 -03:00
Guillaume Bernard 5a663ee671 multi-choice: Fix i18n of navigation button tooltips
The previous approach built tooltip strings by formatting a translated
category name (e.g. "Month") into a generic "Previous %1$s" template.
This is a classic gettext concatenation anti-pattern: languages with
grammatical gender (French, Spanish, German, …) need the adjective to
agree with the noun, and word order can differ from English, so
translators of the format string have no way to produce a correct
result.

Replace the format strings and their helper callbacks with two explicit
GObject properties on GcalMultiChoice: prev-button-tooltip-text and
next-button-tooltip-text. The buttons in the template now bind to
these properties directly. Each widget instance in gcal-date-chooser.blp
sets its own fully self-contained translatable string ("Previous month",
"Next month", "Previous year", "Next year"), giving translators all the
context they need to handle gender and word order correctly.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1547
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/721>
2026-03-10 20:43:02 -03:00