Commit Graph
100 Commits
Author SHA1 Message Date
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
Georges Basile Stavracas Neto 741a3d7748 metainfo: Cleanup formatting 2025-03-19 19:24:24 -03:00
Georges Basile Stavracas Neto ed3e06dd0e views/week: Cleanup measurement code
It's lame but simply removing the code works.
2025-03-19 19:23:58 -03:00
Georges Basile Stavracas Neto f9ad1c2e7e views/week: Cleanup line rendering code
Remove copied style context calls, pass less arguments.
2025-03-19 19:23:58 -03:00
Georges Basile Stavracas Neto 60c2bd2138 views/week: Make selection widget permanent
And toggle its visibility instead, like the DnD widget.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto 81e881caa9 views/week: Use widget for drop target indicator
Gets rid of a few warnings
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto fad962c6ed views/week: Cosmetics 2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto 280515a1b5 views/week: Simplify return statement
dnd.cell is never -1 in this code path.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto 5d60bfc797 views/week: Use anonymous struct for dnd
No functional changes.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto fbca670b62 utils: Add DnD target widget
Another utility function.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto 69ac7468e2 views/week: Replace selection rendering with widget
Should get rid of a few warnings. No functional changes.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto fe16da8ced utils: Add util function for selection widgetry
Will be used by the week grid
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto d7a6d95629 views/week: Use anonymous strict for selection
No functional changes.
2025-03-19 19:23:57 -03:00
Georges Basile Stavracas Neto 1fbcc79313 gui/event: Add some assertions 2025-03-19 12:22:28 -03:00
Georges Basile Stavracas Neto 0db8e5fb4c tests: Initialize autoptr variable 2025-03-19 12:21:39 -03:00
Georges Basile Stavracas Neto 44e12da104 gui/event: Initialize autoptr variables
A good practice in general.
2025-03-19 12:21:13 -03:00
Georges Basile Stavracas Neto f96a1fb8ce tests: Fix typo 2025-03-19 12:17:39 -03:00
Georges Basile Stavracas Neto da495d65cd Post-release version bump 2025-03-19 12:16:52 -03:00