Commit Graph
5836 Commits
Author SHA1 Message Date
Artur S0 686abd1da6 Update Russian translation 2026-06-08 13:14:54 +00:00
mindonwarp 7baed29551 event-editor: Remove dead code
Looks like the gcal-time-chooser-row.blp was resurrected from a
forgotten .ui file with "blueprint-compiler port". The .ui and .h were
not removed with !516

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/775>
2026-06-07 09:23:34 +02:00
Flynn Peck 41f6d2d73b Update Cornish translation 2026-05-29 17:05:21 +00:00
SShubham1 cb0ec97653 calendar-list: move previous/next week with PgUp/PgDown via ShortcutController
Currently, clicking on a calendar in the sidebar's listbox traps
the keyboard focus. As a result, pressing PageUp or PageDown
scrolls the listbox instead of switching the date.

Similar to commit fbc18174 for the week view, this adds a
capture-phase ShortcutController to the calendar listbox. This
ensures that PgUp and PgDown consistently switch month or week
regardless of whether a calendar item is focused.

Fixes #1593

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/771>
2026-05-28 14:10:08 +00:00
Hari Rana 4f9cba85fb views/month-view: Set ceiled height of each row
Fixes: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1290>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/772>
2026-05-28 06:27:37 -04:00
Hari Rana 7ebd9f2744 views/month-view-row: Add property to negate the compensated pixel
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/772>
2026-05-28 06:27:37 -04:00
Jan-Michael Brummer ef5935f1fa event-popover: Add support for Teams links
Add a separate function to extract the description and the URL from a
Teams-formatted event. Add a test for this as well.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1312
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/753>
2026-05-26 19:55:25 -03:00
Adrian Kramer 823daa3fb1 manager: Don't reset refresh interval on startup
The refresh interval was unconditionally set to 30 minutes every time
a calendar source was loaded, overwriting any user-configured value.
Only set the default if no interval has been configured yet.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1443
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/746>
2026-05-26 17:42:37 +00:00
Hari Rana 1dcec8d2b5 event-editor/notes-section: Follow AdwEntryRow's style
The current notes text view has had a 2px offset for
an unknown amount of time, due to us magic-numbering
margins and/or padding. This approach works a little
bit differently, in that it uses the `.editable-area`
style class and sets the overlay's CSS name to "box"
to use a predictable size of margins from AdwEntryRow.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/738>
2026-05-25 07:07:53 -04:00
Flynn Peck dc423a2924 Update Cornish translation 2026-05-22 21:31:52 +00:00
Georges Basile Stavracas Neto c18218d1f6 core/event-list: Use uids to compare events
We can have multiple GcalEvent* instances for the same underlying
icalcomponent. Compare the uids instead of the raw pointers.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1585

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/766>
2026-05-20 15:42:15 -04:00
Georges Basile Stavracas Neto 43e0c53ee4 core: Remove dead code
This is now entirely unused.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/767>
2026-05-20 14:33:13 -04:00
Georges Basile Stavracas Neto 5a693f2a25 views/month: Port to GListModel
This was an oversight from the original MR.

Pass the GListModel to the month popover, and let it filter itself
out. Use GtkListBox model utilities for automatically managing the
event widgets.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1582
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/767>
2026-05-20 14:33:13 -04:00
Georges Basile Stavracas Neto 59ee1db556 views/month: Show first invisible rows above and below
But mark them as not child visible. This should make keyboard
navigation work again, as the focused rows don't change actual
visible state, and thus are keyboard navigatable and don't lose
focus.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/769>
2026-05-20 18:26:37 +00:00
Georges Basile Stavracas Neto c9c455b6d8 views/month: Only recalculate layout blocks when needed
The tick callback can be fired *after* the GtkWidget.map() vfunc is
called, in which case the recalculate_layout_blocks() will run with
an already recalculated layout, which is invalid.

Only call recalculate_layout_blocks() when the blocks are invalidated.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/768>
2026-05-20 13:45:52 -03:00
Georges Basile Stavracas Neto 298593456a view/month: Drop GtkBoolFilter from rows
They're slower and showed up in the profilings. Use a custom filter
for now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/765>
2026-05-19 19:25:49 -03:00
Georges Basile Stavracas Neto f40c2cb0e9 gui/fading-label: Rewrite using PangoLayout directly
Instead of an internal label widget, store the text and the PangoLayout
directly, and only render them. Cache as much as possible to avoid
font reshaping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/765>
2026-05-19 19:25:25 -03:00
Georges Basile Stavracas Neto 601acef508 views/month: Use variable for better readability
The second part of the if condition is not obvious, so use a variable
with a proper name to make it easier to understand.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto 573e1dc042 views/month: Simplify layout blocks recalculation
We can merge two of the three branches, and thus cleanup a function
that is only used there.

Suggested by Hari.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto c609f281dc gui/event-widget: Mark properties as explicit-notify
A small correctness change. Suggested by Hari.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto c0127fa2af views/week-header: Reuse event widgets using the new pool
Same deal as the Month view.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto bbc041eed9 views/month: Recycle event widgets using the pool
Create a new GcalEventWidgetPool shared between all month view rows.
The event widgets are distributed to rows as needed.

When rows are done with the event widget, the give them back to the
pool so that other rows can reuse them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto 3692747362 views/week-grid: Reuse event widgets
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto 4205e08be6 views/month: Reuse event widgets
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:10 +00:00
Georges Basile Stavracas Neto 59cae05929 gui: Introduce GcalEventWidgetPool
This is a helper object that preallocates a number of event widget,
and then gives them away to consumers. When consumers are finished
using the event widget, instead of simply destroying it, they can
return the widgets to the pool, so it can be further reused.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:09 +00:00
Georges Basile Stavracas Neto 9ef437009f gui/event-widget: Make event setter public
And make the "event" property read-write and not construct-only.

This will be useful for recycling event widgets later.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:09 +00:00
Georges Basile Stavracas Neto 3104f16f7c gui/event-widget: Connect to signals using GSignalGroup
It'll make it easier when making the "event" property mutable later
on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:09 +00:00
Georges Basile Stavracas Neto e4d1fdf13c gui/event-widget: Use more bindings in the UI file
Instead of manually connecting to signals and binding to properties
in code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
2026-05-19 22:20:09 +00:00
Vasil Pupkin c939c7176d Update Belarusian translation 2026-05-13 18:00:19 +00:00
Georges Basile Stavracas Neto 1e6fe7af51 core/log: Add tab after time
This should fix the misaligned timestamps.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:37:25 -03:00
Georges Basile Stavracas Neto 1fbd193954 core/timeline: Sort events better
The previous sorter was a simple GcalRange proxy, but we need a more
robust and stable sorting mechanism. Use multiday, start and end dates,
length, and finally the last modified date to sort events.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:37:15 -03:00
Georges Basile Stavracas Neto 378b7f6075 views/month: Remove unused field
The hash table is not used since we moved to list models.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:37:05 -03:00
Georges Basile Stavracas Neto 64efb3a06b views/month: Completely hide invisible rows
Instead of just skipping painting. This should remove rows and event
widgets from the CSS tree, avoid measurements and relayouts, and a
few other benefits.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:36:58 -03:00
Georges Basile Stavracas Neto 32d962aa8d gui/event-widget: Remove useless queue_draw
We use a label these days, no need for manual drawing code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:36:48 -03:00
Georges Basile Stavracas Neto c62af398e5 gui/event-widget: Remove unused fields
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:36:42 -03:00
Georges Basile Stavracas Neto bfc4a7dc62 gui/event-widget: Use modern practices for properties
Use a property array, install them all at once, and notify using
g_object_notify_by_pspec().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:36:36 -03:00
Saikeo Kavhanxay 030d01b380 Add Lao translation
(cherry picked from commit 21770f96d2ae7aa9cf00f9ef869df5b32c80ba97)
2026-05-05 12:21:55 +00:00
Hari Rana 8629b1f422 views/month-cell: Create activation signal and shortcuts from utility function
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/747>
2026-05-04 10:42:02 +00:00
Hari Rana c507fb23af gui/event-widget: Create activation signal and shortcuts from utility function
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/747>
2026-05-04 10:42:02 +00:00
Hari Rana 312b286e2b utils: Add utility function for creating activate signal and shortcuts
The current way of adding activation shortcuts is cumbersome,
as it is a for-loop pasted in the middle of class initializers.
The utility function addresses this problem by simply allowing us
to declaratively add these shortcuts with minimal effort.

Furthermore, the implementation is also simpler, thanks to the
`gtk_widget_class_add_binding_signal()` wrapper function.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/747>
2026-05-04 10:42:02 +00:00
Georges Basile Stavracas Neto 16a67b7f60 views/week-header: Use gdkarrayimpl.c as backing store
Same deal. It's faster.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 15:30:20 -03:00
Georges Basile Stavracas Neto 2f7dce36e2 core/event-list: Use gdkarrayimpl.c as backing store
GSequence is useful and provides us with a convenient API, however,
it pretty much guarantees cache misses when iterating, lots of pointer
chasing, and scattered memory.

gdkarrayimpl.c works around all of that, at the cost of more expensive
additions and removals. But because we do a lot more lookups compared
to edits, there should still be benefits to it.

Change the backing store to be based on gdkarrayimpl.c.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 15:29:31 -03:00
Georges Basile Stavracas Neto d207a95656 contrib: Import gdkarrayimpl.c from GDK
We'll use this in the next patch to reimplement GcalEventList.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 14:56:07 -03:00
Georges Basile Stavracas Neto c9c4f1c046 gui/window: Only add Agenda view to timeline when visible
There's no point in adding the Agenda view to the timeline when it's
invisible, it just causes invisible and unnecessary event widget
recreation.

Add it lazily to the timeline, when the page visibility changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 14:56:07 -03:00
Georges Basile Stavracas Neto 95bc0a8fb2 views/month: Reduce to 3 pages
Now that the timeline handles augmentation, the Month view doesn't need
to fetch so much data at once. Reduce to 3 pages of month rows.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 14:56:07 -03:00
Georges Basile Stavracas Neto d47358f294 core/manager: Use an augmented timeline
Augment the range of events by a factor of 2.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/755>
2026-05-03 14:01:22 -03:00
Georges Basile Stavracas Neto b353c9f259 core/timeline: Add support for augmented timelines
Augmented timelines increase the range of dates from its subscribers
by the specified factor. They're useful for the interactive views,
since they prevent fetching new events so often as when views change.

Add the necessary API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/755>
2026-05-03 14:01:22 -03:00
Georges Basile Stavracas Neto 08f3f94ec1 gui/application: Stop weather service on shutdown
Instead of during context finalization, which is too late.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto cd82c2c52c gui/date-chooser: Properly remove idle source
When disposing of the widget, also remove the associated idle source
that might exist. This prevents a crash.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto c084e28400 views/week: Don't deal with events out of range
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:54 +00:00