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
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
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
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
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
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
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
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
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
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
voyage200
9f956c93d4
core/manager: Also refresh collections
...
Add on_collection_source_refreshed() callback. Track collection
source refresh in clients_synchronizing. Refresh collection sources
before calendar clients. Fix PROP_SYNCHRONIZING state by waiting for
all async ops.
2026-03-03 20:07:18 -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
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
884855ee0b
core: Add a wrapper object for event organizer
...
Add a wrapper for the ECalComponentOrganizer. An instance of this type
is kept as part of the GcalEvent structure.
The GcalEventOrganizer is just a "proxy" to the ECalComponentAttendee
and its purpose is to unclutter the GcalEvent interface and provide a
bindable base for a UI widget.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671 >
2026-01-21 19:37:52 +00:00
mindonwarp
4f6e705e8b
core: Add a wrapper object for attendees
...
Wrap ECalComponentAttendee structure in calendar's own structure to
prevent propagating the dependency on libecal types to the ui layer.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671 >
2026-01-21 19:37:51 +00: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
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
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
Federico Mena Quintero
63cf4374e4
Remove gcal_event_set/get_original_timezones()
...
They are unused now.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 20:00:01 -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
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
Ignacy Kuchciński
33d87c3511
core/context: Delay reading time format
...
Reading time format from the settings portal during context init results
in interacting with xdg-desktop-portal before GtkApplication can
register the host app id. This makes portals not aware of the
application id, which could cause problems in the future.
Fix that by calling read_time_format during gcal_context_startup, which
is called after the GtkApplication startup chain-up.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/586 >
2025-06-08 20:16:08 +00:00
Federico Mena Quintero
84cf41cc4f
core/timeline: Fix leak of QueueData in queue_event_data()
...
The new QueueData was created even for REMOVE_EVENT, which causes an
early exit. Only create the QueueData when needed.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/582 >
2025-05-30 14:10:05 +00:00
Federico Mena Quintero
d1499329cc
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
cf48f79f36
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
26c3f83e3c
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
e2dc3460a6
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
1d5fd3eec9
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
21b7607c39
core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
f55f42b81c
core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
32ebd80613
core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
eeb9c99172
core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
0d3975b556
core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
e884a09268
core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
872aae9183
core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00