Federico Mena Quintero
1cfb58e3c4
Fix leak of date_time_end
...
It's replaced by this line:
date_time_end = all_day ? g_date_time_add_days (date_time_end, -1) : date_time_end;
so we need to be able to free that.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
ba69d04465
Remove unused variable
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
2ca29785dc
Remove superfluous conditional
...
Now that all cases set the same times to the
{start,end}_date_time_chooser widgets, we don't need that condition anymore.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
1309bf4a82
gcal_schedule_section_set_event(): Don't change the timezones when setting up the widgets
...
I think this was being done so that:
- create a new all-day event
- open it in the event editor
- switch to time-slot
- time choosers now say "UTC"
doesn't happen. I think this can be handled more gracefully.
Evolution does not handle it very gracefully; when turning off
all-day in its event editor, it sets the times to $now.
The iOS calendar app is better. If you turn all-day off, it picks
$next_hour_based_on_now for the start time, and $next_hour_plus_one
for the end time. So if you turn off all-day and it is 18:24 right
now, it will set the start_time to 19:00 and the end_time to 20:00 ---
that is, it creates a one-hour event at the next start of the hour
from now.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
a0a817ee8a
Add scaffolding for a new test-internals binary
...
* There is a gcal_tests_add_internal() function...
* called from tests/test-internals.c...
* ... which doesn't add any tests yet, but we'll have some soon.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:57 -03:00
Federico Mena Quintero
cdc602bb1f
Start sketching gcal_schedule_values_set_start_date()
...
But we need a test first!
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
938419c1d4
Handle the time_format as part of GcalScheduleValues and WidgetState
...
This will let us write tests for changing the time format without a
context object.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
11dcab5ddf
Set the state of the schedule_type_toggle_group in update_widgets()
...
And now the redundancy in gcal_schedule_section_set_event() is gone.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
253b1d4f17
Start transitioning gcal_schedule_section_set_event() to use update_widgets()
...
For now this is redundant, as update_widgets() only sets the
visibility of the time selectors, while the call to
adw_toggle_group_set_active_name() effectively does the same.
But that redundancy will go away in the next step.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
640488883b
Introduce a WidgetState structure and compute it from GcalScheduleValues
...
You may think, yet more indirection! But behold:
1. We take events from the widgets ("schedule type (all-day) changed") and turn
them into actions (gcal_schedule_values_set_all_day()).
2. Those actions (e.g. that function) decide how to change the GcalScheduleValues.
3. We compute the desired state of the wigets, based on the new
values.
4. We set the state of the widgets based on that.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
2c476f6d02
New function to set the all_day flag on GcalScheduleValues
...
You may think that this is too much indirection. But wait! This is
the start of enabling tests. Hang in there.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
a4d891aadd
New function to copy a GcalScheduleValues
...
These structs are immutable. Any changes will be made on a copy.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
939b60d6b4
gcal_schedule_section_apply(): extract an _apply_to_event() helper function
...
With this, there's no direct mutation of the self->event anywhere; the
_apply() function just uses self->event as a target for mutation
because that's what the surrounding architecture expects.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
70173639e4
gcal-schedule-section.c: Use the stored values instead of pulling them from the event every time
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
f51186c298
gcal_schedule_section_apply(): use the stored values as a reference
...
Also, update the values from the updated event at the end.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
68126bcfac
gcal_schedule_section_set_event(): set the widgets from the extracted values, not from the event
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
d44e6847c7
GcalScheduleSection: store the values when an event is set
...
We don't use them yet; just hooking things up for now.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
f75785a34c
GcalScheduleValues: new struct to hold values from a GcalEvent for the schedule widges
...
We'll move GcalScheduleSection to operate without a backing GcalEvent,
so we can add tests.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
42b00ec052
Fix cut&paste error
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
72762ee11d
GcalEventWidget: remove the date-end property; it is unused
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
7a814cc1f3
Move explanatory comment
...
Analogous to date-start
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
6e10e746c3
GCalEventWidget: remove the date-start property; it is never used
...
Setting and getting the value always happens through
gcal_event_widget_set_date_start() and gcal_event_widget_get_date_start().
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
2f86a7a77b
Move explanatory comment
...
We'll remove the date-start property, so put its description in the
corresponding setter function.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:15 -03:00
ARAKHNID
616481b60c
gui/event-popover: Always focus action button
...
Previously, if there was a meeting row, the join button would be focused
instead of the action button. This ended up being undesired behavior, so
it's been removed.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1445
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/626 >
2025-08-26 17:47:49 +00:00
Hari Rana
1ab336009e
views/month-view: Skip view when tabbing in event widget
...
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1444
2025-08-25 21:33:58 -06:00
Daniele Ziaco
1f86255e33
gcal-event-widget: Update labels when time-format changes
...
When the time format changes in Settings,
events in the week/month views did not update at runtime.
This connects the appropriate signal so the widget updates immediately.
Fixes #1373
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/625 >
2025-08-20 23:29:44 +00:00
Hari Rana
534fb3a83c
gui: Update to libadwaita's custom properties and style classes
...
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1440
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624 >
2025-08-18 19:59:43 -04:00
Hari Rana
be0ba51481
gui: Replace dim-label with dimmed style class
...
`dim-label` is deprecated.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624 >
2025-08-18 18:37:25 -04:00
Jean-François Fortin Tam
e56ef92abd
gcal-month-cell: Fix a typo in a comment
2025-08-18 15:16:35 -04:00
Jean-François Fortin Tam
e2a3d31532
month-cell: Use full-length month names when safe to do so
...
Full month names are easier to notice and read while scrolling,
and would be read more naturally by text-to-speech screen readers.
An exception must be made when today is near the beginning of the month,
as the weather forecast temperatures labels might also appear there.
In that case, use the abbreviated version of the month name label.
Fixes issue #962
2025-08-18 15:16:35 -04:00
Hari Rana
78e87fad4b
gui/event-popover: Apply style to italicize
...
Using the italic attribute in the label property made the
attribute translatable, which is undesired.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1427
2025-08-02 15:20:36 -04:00
Emma Blink
fbc181743b
week-view: explicitly handle PgUp/PgDown via ShortcutController
...
ScrolledWindow handles PgUp/PgDown in bubble phase to trigger scrolling.
Which leads to inconsistent behaviour: scrolling when an event is focused,
and moving to the previous/next week when not. Explicitly handling the
shortcuts with a ShortcutController in capture phase makes it consistently
navigate to previous/next week.
Fixes #1409
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/618 >
2025-07-27 16:23:40 +01:00
Hari Rana
d477ac2d72
event-editor/multi-choice: Focus widget if increment/decrement buttons are pressed
...
This also re-sets the state flags of the buttons, because otherwise
the increment/decrement buttons lose their hovered state after
the widget gains focus.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/616 >
2025-07-27 07:20:15 -04:00
Hari Rana
576c82b060
event-editor/multi-choice: Add focus ring around the entire widget
...
The current behavior of the widget makes it so keyboard focus
outlines the toggle button rather than the entire widget. In some
cases, the outline touches the edges of the label, which makes it
look cramped.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/616 >
2025-07-19 17:55:11 -04:00
Jean-François Fortin Tam
1ab28d3e95
month-cell: Bold month name & 1st day labels
...
Make it easier to track which month you are crossing while scrolling.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/962
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/478 >
2025-07-15 15:46:41 -04:00
Jean-François Fortin Tam
1b500973e6
month-cell: Simplify calls to day_of_month
...
We already had this local variable waiting to be used;
let's reuse it to avoid calling querying the date repeatedly.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/478 >
2025-07-15 15:46:41 -04:00
Jean-François Fortin Tam
3e4ef6f9c7
event-editor: Hide Cancel & Delete when read-only
...
Read-only events show a "Done" button instead of the "Save" button.
The "Done" button does the same thing as "Cancel",
so the "Cancel" button is then redundant.
Likewise, it is impossible to delete events from read-only calendars,
as stated by the banner message in that dialog. In that case,
there's no reason to show a big "Delete" button that you can't click on.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1168
2025-07-11 23:27:08 -04: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
FineFindus
a00a1f01bb
gui/event-popover: Add export button
...
Adds an export button to the event popover, allowing users to export
the selected event as an ICS file.
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1276
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/602 >
2025-07-11 16:25:30 +00:00
Jean-François Fortin Tam
c2b36c1161
shortcuts-dialog: Update F9 to "Toggle Sidebar"
...
Replace the "Open Calendars Menu" description by "Toggle Sidebar";
there is no more menu for it, and the shortcut was reassigned.
2025-07-10 10:45:41 -04:00
Jamie Gravendeel
48b9bcc0e8
window: Make view button tooltips HIG compliant
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/592 >
2025-07-08 15:31:06 +00:00
Jamie Gravendeel
7eb65ded71
window: Use closures for view button tooltip text
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/592 >
2025-07-08 15:31:06 +00:00
Hari Rana
684ed71711
css: Rework month view's box shadows
...
This makes the box shadows permanent.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/604 >
2025-07-08 14:08:37 +00:00
Hari Rana
a0b530298a
views/month-view: Allocate more for grid height
...
This allocates two extra pixels for the grid's height to make
the cell borders hide below the footer.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/604 >
2025-07-08 14:08:37 +00:00
ARAKHNID
abcce2a1d5
shortcuts-dialog: match contents to actual shortcuts
...
!542 updated some shortcuts, notably Alt+1, Alt+2, and F8. These changes
weren't reflected in the shortcuts dialog.
This commit updates the shortcuts dialog so its listed shortcuts match
the actual shortcuts.
Closes #1404
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/614 >
2025-07-06 18:44:08 -05:00
Hari Rana
110856ee1a
views/month-cell: Don't assert icon_tooltip_binding
...
The g_assert line would exit the program whenever we tried targeting
a month cell from the inspector.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/601 >
2025-07-05 18:06:05 -04:00
Hari Rana
8dd8538014
views/month-cell: Use GtkWidget APIs for retrieving margin
...
GtkStyleContext is deprecated.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/601 >
2025-07-05 18:05:07 -04:00
Hari Rana
ba716102b9
common/date-chooser: Make arrow left/right move focus across grid
...
This also notifies the user when out of bound with arrow buttons.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/608 >
2025-07-05 21:07:50 +00:00
Hari Rana
032a71dde6
common/date-chooser: Skip calendar grid with tab
...
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/608 >
2025-07-05 21:07:50 +00:00
Hari Rana
6e4fe88e58
gui: Port GtkShortcutsWindow to AdwShortcutsDialog
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/611 >
2025-07-02 20:50:31 -04:00