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
Georges Basile Stavracas Neto
c71fcf7029
views/month: Add "range" property to rows and use it
...
Use it as the binding source of the GtkExpression for the boolean
filter used to filter the list of events. This allows automatic
filtering when the "range" property changes.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto
afd9f9b954
core/timeline: Remove message queueing and listeners
...
"Let go and move on." - The Fool?
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto
136fd16a0a
gui/date-chooser: Port to GListModel
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto
d065d4b9e8
views/agenda: Port to GListModel
...
This is a major rework of the Agenda view. It splits the view into
GcalAgendaViewDay, which represent a single day with events; and
GcalAgendaViewDayRow, which is the actual widget with a title label,
and a listbox with event widgets.
The Agenda view itself merely manages a list of GcalAgendaViewDays,
and updates them with the events model, and active dates.
This allows us to get rid of the custom listbox row, and the confusing
checks for event widgets, and all the bugs the came with it. It also
allows for removing the internal GcalRangeTree, and delegate all
event management to list models.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto
5c39162f86
core/search-provider: Port to GListModel
...
No deal
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:53 +00:00
Georges Basile Stavracas Neto
fa03c6f9af
views/week-grid: Port to GListModel
...
And, while at it, rewrite the layout algorithm to operate on blocks of
overlapping events, and segmented columns. Like the month view row,
layouts blocks are invalidated at any point in time, but recalculated
immediately before a relayout happens.
The reason for doing such a massive rewrite while in the middle of the
port to GListModel is because it's easier to handle GListModel data
with this approach, than with the previous approach of storing it all
in a GcalRangeTree.
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1153
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:53 +00:00
Georges Basile Stavracas Neto
5fe24582d4
core/range-tree: Add gcal_range_tree_has_entries_at_range
...
It checks if there's any entry in that range. It's a little faster
than gcal_range_tree_count_entries_at_range() because it stops at
the first entry that matches it.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto
807f5608b1
search/model: Port to GListModel
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto
34e28e31fe
views/week: Port week header to GListModel
...
Rework the add/remove functions to make them internal. The remove
function can now operate on GcalEvent* instead of gchar* uuid,
since it's not bound to GcalTimelineSubscriber anymore.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto
c635db3495
views/week: Port to GPtrArray
...
GLists are an artifact of times immemorial and we should
avoid using them as much as possible. In this commit, for
example, there were a couple of accidentally quadratic
pieces of code.
Port (mostly of) the week view header to GPtrArray.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:51 +00:00
Georges Basile Stavracas Neto
039b75755e
views/month: Port to GListModel
...
Neutralize the add/remove/update vfuncs (we can't remove them yet).
Pass the event model to the individual week rows, and let them
filter their events using a GtkFilterListModel.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:51 +00:00
Georges Basile Stavracas Neto
df8033b3ba
core/timeline: Cosmetics
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:51 +00:00
Georges Basile Stavracas Neto
71c5d0b70d
core/timeline: Add plumbing for models
...
Add a GtkFlattenListModel that flattens out all events from the
calendar monitors. Keep a GtkFilterListModel, and a GtkSortListModel,
for each subscriber. Manually update the filter when the range of
the subscriber changes.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto
5f5e438955
core/timeline-subscriber: Add set_model() vfunc
...
This is the entry point that will allow views to use models instead
of the manual add/remove/update_events vfuncs.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto
a303759913
core/timeline: Store calendar monitors in a GListModel
...
This will allow flattening and merging them.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto
cc6736a16f
core/calendar-monitor: Implement GListModel
...
This uses GcalEventList to as the backing store of events, and proxies
the "items-changed" signal.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto
9eea2ee985
core/calendar-monitor: Use NULL-terminated arrays
...
This will help with next commits
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto
6da43e9353
Introduce GcalEventList
...
This is a GListModel implementation that is specific to
GcalEvents. Events are stored in a GSequence in order of
date.
Add a couple of tests exercising additions and removals.
WIP: add more tests
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto
4796330de0
core/log: Ignore GWeather messages
...
Mostly noise, and lots of XML outputs.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto
020611cd12
Post-branching version bump
2026-03-17 20:03:32 -03:00
Georges Basile Stavracas Neto
70388c9541
Post-release version bump
2026-03-14 12:25:49 -03:00
Georges Basile Stavracas Neto
ff4d7f7d59
50.0
2026-03-14 12:24:48 -03:00
Georges Basile Stavracas Neto
1281598aa7
contributing: Link to CoC and add no-LLM statement
...
This is copied ad verbatum from libadwaita, which itself was
introduced based on [1].
[1]
https://discourse.gnome.org/t/loupe-no-longer-allows-generative-ai-contributions/27327
2026-03-13 19:24:42 -03: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
Georges Basile Stavracas Neto
9712280aea
core/manager: Cosmetics
2026-03-03 20:12:45 -03:00
Georges Basile Stavracas Neto
b4292c2026
core/manager: Increment before potentially decrementing
...
Otherwise we can go backwards first. Not going to break anything,
but this is a more robust logic.
2026-03-03 20:11:07 -03:00
Georges Basile Stavracas Neto
e1438b3c8e
core/manager: Use g_autoptr more
...
In the clients list.
2026-03-03 20:09:51 -03:00
Georges Basile Stavracas Neto
c2189f1860
NEWS: Fix typo
2026-03-01 17:08:06 -03:00
Georges Basile Stavracas Neto
65e0642ad6
Post-release version bump
2026-03-01 16:56:07 -03:00
Georges Basile Stavracas Neto
6f37e4e486
50.rc
2026-03-01 16:55:19 -03:00
Georges Basile Stavracas Neto
5b1d57f823
Post-release version bump
2026-02-09 18:30:08 -03:00
Georges Basile Stavracas Neto
ae9d7a3762
50.beta
2026-02-09 18:29:10 -03: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
Georges Basile Stavracas Neto
ce26a9b8e1
Post-release version bump
2026-01-05 20:03:20 -03:00
Georges Basile Stavracas Neto
fcc8845669
50.alpha
2026-01-05 20:02:30 -03:00
Georges Basile Stavracas Neto
484ce89b0f
flatpak: Add test args
...
Much like with finish-args, this makes the permissions
available to the sandbox when using the flatpak-builder
test-runner.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/667 >
2025-12-06 00:55:43 +02:00
Georges Basile Stavracas Neto
0d765c4ff6
flatpak: Don't run in debug mode
...
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1234
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/667 >
2025-12-06 00:55:43 +02:00
Georges Basile Stavracas Neto
4c4fc5a965
core/range-tree: Properly free nodes
...
It was missing the GDateTime *max field.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 18:01:11 -03:00
Georges Basile Stavracas Neto
13dc2ff3be
tests/daylight-saving: Fix string leaks
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 17:52:53 -03:00
Georges Basile Stavracas Neto
36d3837e0b
core/range-tree: Clear range from deleted nodes
...
Otherwise we leak the range.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 17:43:04 -03:00
Georges Basile Stavracas Neto
2d8d50591e
tests/utils: Declare ICalTimes with g_autoptr
...
The corresponding ICalComponent functions are transfer full.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 17:27:31 -03:00
Georges Basile Stavracas Neto
3225ffc88e
tests/utils: Unref ICalComponent properly
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 17:19:05 -03:00
Georges Basile Stavracas Neto
b064a23dbc
tests/event: Fix string leak
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664 >
2025-11-19 17:14:37 -03:00
Georges Basile Stavracas Neto
50217bba42
core/event: Cosmetics
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/663 >
2025-11-19 09:48:25 -03:00
Georges Basile Stavracas Neto
a884076dc5
core/event: Remove g_autoptr declaration
...
Turns out g_date_time_get_timezone() is transfer-none, so assigning it
to a g_autoptr variable is invalid.
Fixes 42f891ff42
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/663 >
2025-11-19 09:47:29 -03:00
Georges Basile Stavracas Neto
6bb52f53e5
core/event: Improve setup function
...
Use g_autoptr, shuffle some code around, and fix a memory leak.
2025-11-18 14:58:08 -03:00
Georges Basile Stavracas Neto
67ca9ed20c
utils: Watch calendars for read-only change
...
This should make the list model update itself whenever a calendar
changes between read-only and read-write.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/660 >
2025-11-18 12:09:01 -03:00
Georges Basile Stavracas Neto
18f7c0f87d
build: Depend on GTK4 4.20
...
We'll use the new watch items API in GtkFilterListModel.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/660 >
2025-11-18 12:08:32 -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
Georges Basile Stavracas Neto
ceee69599d
flatpak: Add gweather-locations
2025-09-14 10:29:19 -03:00
Georges Basile Stavracas Neto
4256723c2a
Post-branching version bump
2025-09-14 10:22:43 -03:00
Georges Basile Stavracas Neto
727d05edff
49.0
2025-09-14 10:20:21 -03:00
Georges Basile Stavracas Neto
c25bdc5713
Post-release version bump
2025-08-30 12:34:30 -03:00
Georges Basile Stavracas Neto
8c6c417347
49.rc
2025-08-30 12:33:48 -03:00
Georges Basile Stavracas Neto
7282943d21
views/month: Remove useless function
...
The update_header_labels() was rendered useless after commit 1de447f7 .
This was discovered by static-scan. Thanks for Arak for finding the
root cause.
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1418
2025-07-11 13:33:13 -03:00
Georges Basile Stavracas Neto
257570b5aa
Post-release version bump
2025-07-05 17:43:42 -03:00
Georges Basile Stavracas Neto
8db5c1cada
49.alpha
2025-07-05 17:41:18 -03:00
Georges Basile Stavracas Neto
d16cc2bc68
utils: Remove get_source_parent_name_color
...
One less weird function lurking around.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610 >
2025-07-02 18:04:26 +00:00
Georges Basile Stavracas Neto
281191b5b3
gui/calendar-list: Add headers
...
This makes it easier to see which calendar belongs to which group.
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1196
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610 >
2025-07-02 18:04:26 +00:00
Georges Basile Stavracas Neto
e9ec77f15b
core/calendar: Add "parent-source" property
...
Tracks the parent ESource of this calendar. Will be useful for future
patches.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610 >
2025-07-02 18:04:26 +00:00
Georges Basile Stavracas Neto
4e7bc70450
gui/window: Cosmetics
2025-06-30 12:48:47 -03:00
Georges Basile Stavracas Neto
766369dd48
build: Remove unused variables
2025-05-21 01:38:07 -03:00
Georges Basile Stavracas Neto
6a9d5a75fa
core/calendar-monitor: Remove property descriptions
...
They're unnecessary.
2025-05-21 01:38:00 -03:00
Georges Basile Stavracas Neto
06ef0539e4
views/week: Properly math out selection positions
...
Commit 69ac7468e2 introduced a regression since it calculates the
height of the selection widget based on the Y position of end+1 cell,
which is the first cell of the next column in the case of the last
cell.
Fix that by mathing out properly.
Fixes: 69ac7468e2
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1397
2025-05-04 17:16:18 -03:00
Georges Basile Stavracas Neto
5504872eb6
views/week: Better scope some variables
...
Move them to inner scopes, and make them signed integers.
2025-05-04 17:15:04 -03:00
Georges Basile Stavracas Neto
c42d987335
gui/window: Track focus widget when showing event preview
...
Store a weak pointer to whatever widget triggered the preview, and
restore when the popover is closed. This should fix the focused list
box row issue.
2025-04-30 21:43:52 -03:00
Georges Basile Stavracas Neto
37878416f3
ci: Add commit rules
2025-04-04 21:52:33 -03:00
Georges Basile Stavracas Neto
4b331d65d9
ci: Install more packages
2025-04-04 21:24:26 -03:00
Georges Basile Stavracas Neto
4fc7ad2f89
ci: Set executable bit of clang-format-diff
2025-04-04 21:22:31 -03:00
Georges Basile Stavracas Neto
2d755da859
ci: Use Fedora image for style checker
2025-04-04 21:16:59 -03:00
Georges Basile Stavracas Neto
4356c64ac8
ci: Set executable flag in run-style-check-diff.sh
2025-04-04 21:01:13 -03:00
Georges Basile Stavracas Neto
340081d431
views/week: Remove shared size group
2025-04-04 21:00:30 -03:00
Georges Basile Stavracas Neto
5ac19000ea
views/week: Use a separator instead of custom CSS
2025-04-04 21:00:30 -03:00
Georges Basile Stavracas Neto
f336b142f4
views/week: Reimplement arrow changes with CSS
2025-04-04 21:00:30 -03:00
Georges Basile Stavracas Neto
9048fe939f
views/week: Move expand header button to week view
2025-04-04 21:00:30 -03:00
Georges Basile Stavracas Neto
c0dfe588ae
views/week: Add 'can-expand' property
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
f653dcd9e6
views/week: Add 'expanded' property
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
a07d80cccf
views/week: Extract headers into GcalWeekView
...
Instead of handling them in GcalWeekHeader
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
65f793b59e
views/week: Use widget for DnD
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
f4ef9a29c3
views/week: Use anonymous struct for DnD
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
cbfada052d
views/week: Use widget to draw selection
...
Same as week grid.
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
e94600668c
weeks/view: Add anonymous struct for selection
...
Same as the grid view.
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
ea23581cf5
views/week: Use g_autoptr more
...
And remove an unused variable.
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
82fa42ec9e
views/week: Replace chain up by manual snapshotting
...
Should make it easier to spot mistakes in the future.
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
fb52dae400
views/week: Turn GcalWeekHeader into a GtkWidget
...
No functional changes so far.
2025-04-04 21:00:29 -03:00
Georges Basile Stavracas Neto
7c8285bdab
views/week: Add intermediary GtkBox
2025-04-04 21:00:28 -03:00
Georges Basile Stavracas Neto
68a3cedbc5
Remove attic
...
The old month view code has no reason to linger around anymore.
2025-04-04 21:00:28 -03:00
Georges Basile Stavracas Neto
adc05dbcbc
Post-branching version bump
2025-03-19 19:45:40 -03:00
Georges Basile Stavracas Neto
e4739c2955
48.1
2025-03-19 19:43:31 -03:00