Commit Graph
100 Commits
Author SHA1 Message Date
Hari Rana 117c032d95 utils: Prefix every function with gcal_util_
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/842>
2026-09-20 12:44:24 +00:00
Hari Rana 38ad6ea3ea utils: Remove unused functions
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/842>
2026-09-20 12:44:23 +00:00
Hari Rana 307f4e78e7 event-editor/multi-choice: Use standard enum members in properties
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 15:07:03 -04:00
Hari Rana 99463b9a62 event-editor/multi-choice: Set accessible label without connecting signal
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:05 -04:00
Hari Rana 2bab7bdc3a event-editor/multi-choice: Remove animate property
We no longer use this property. Removing it will then allow us to
directly set the label without having to use GtkStack, but this
will be done in a later commit.

This also sets all transitions to "none".

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:05 -04:00
Hari Rana 3185997f38 event-editor/multi-choice: Remove wrap property
We no longer have a use case which requires us to keep the
`wrap` property to FALSE, so this patch removes that property
while keeping the wrap behavior.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:04 -04:00
Hari Rana d1e9443b62 common/date-chooser: Remove animate property
We no longer use this property per the previous commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:04 -04:00
Hari Rana 681e24a772 common/date-chooser: Remove wrap property
This no longer exists per the previous commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:04 -04:00
Hari Rana b8e06d32a1 event-editor/multi-choice: Remove unused overrides
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:04 -04:00
Hari Rana 14c20483ae event-editor/multi-choice: Use G_DEFINE_FINAL_TYPE_WITH_CODE()
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/840>
2026-09-19 11:54:01 -04:00
Hari Rana 0d1d339581 views: Document transfer none in gcal_view_set_date()
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/838>
2026-09-19 09:12:05 -04:00
Hari Rana 2f393ab117 views/month-view: Free GDateTime when setting active date
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/838>
2026-09-19 09:08:56 -04:00
Hari Rana dfb9ea645c common/date-chooser: Use GcalGizmo
GcalGizmo allows us to handle focus within child widgets
much more cleanly, as it no longer requires us to override the
ancestor and re-iterating through children.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/760>
2026-09-16 12:22:36 +00:00
Hari Rana 89ff82924b gui/gizmo: Introduce GcalGizmo
This is a utility widget akin to GtkGizmo[1] and AdwGizmo[2].
It is designed for use in complex widgets which require additional
features such as snapshotting, measuring/allocating, and
focusing capabilities.

We want to implement an entry row widget that allows multi-line content.
The first implementation had two widgets: GcalNotesRow for the widget
itself, and GcalNotesTitle to contain and animate the title by overriding
the measure() and size_allocate() class methods. The GcalNotesTitle
widget ended up becoming a basic widget that could easily be handled
by GcalGizmo. The new implementation simply uses GcalGizmo.[3]

Another potential user of GcalGizmo is GcalDateChooser, where the
date grid contains complicated logic for handling focus to a child widget.
Since GcalGizmo is designed to give full reign over focusability, we can
also use it to simplify focus. The layout manager can quickly be swapped to
GtkBinLayout since we don't want to handle custom measure/allocation logic.[4]

[1]: <https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/gtkgizmo.c>
[2]: <https://gitlab.gnome.org/GNOME/libadwaita/-/blob/main/src/adw-gizmo.c>
[3]: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/737>
[4]: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/760>

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/790>
2026-09-09 14:57:14 -04:00
Hari Rana 9838bbee11 gui/application: Add support URL to about dialog
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/823>
2026-09-03 15:48:12 +00:00
Hari Rana a64e3b59a2 gui/calendar-list: Remove calendar-list style class
This fixes a bug where the calendar list in the sidebar would not
change the background color when hovering over a calendar.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/824>
2026-08-31 13:45:30 +00:00
Hari Rana 1b10e66078 gui/event-widget: Guard event popover's pointing coordinates on multi-day events
A follow-up on https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/677#note_2628484,
which prevents the event popover from pointing outside the event
widget's boundaries on multi-day events when activated before exceeding
the drag threshold:
https://docs.gtk.org/gtk4/property.Settings.gtk-dnd-drag-threshold.html

This is mainly useful for people who fidget and may sloppily
click and drag event widgets (before triggering the drag operation),
causing the popover to place itself in unpredictable locations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/697>
2026-08-28 21:55:35 +00:00
Hari Rana b2b6002573 views/month-view: Skip view when tabbing backward with Control on event widget
When an event widget is focused, there is no way to skip the entire
view with key combinations.

This patch addresses this by allowing the user to skip the entire
view when pressing Ctrl+Shift+Tab.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/817>
2026-08-26 21:16:41 -04:00
Hari Rana 3c044ce77c views/month-view: Skip view when tabbing with Control on month cell
We want to skip the entire view, because, otherwise, it runs
gcal_month_view_row_focus_underlying_cell().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/817>
2026-08-26 21:11:15 -04:00
Hari Rana e1bc583597 views/month-view: Use debug messages
Given the complexity of keyboard navigation in the month view, it
may be useful to rely on debug entries/exits to debug edge cases.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/817>
2026-08-26 20:08:28 -04:00
Hari Rana 2e5379982b views/month-view-row: Replace "adjacent with "overlaying" event
"Adjacent" is incorrect because we are focusing the event that is
in front of the month cell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/816>
2026-08-25 22:02:50 -04:00
Hari Rana 14869fa02b views/month-view-row: Replace "adjacent" with "underlying" cell
"Adjacent" is incorrect because we are focusing the cell that is
behind the event widget.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/816>
2026-08-25 22:02:50 -04:00
Hari Rana 11e4d8ee8d views/month-view: Allow focusing adjacent event widget from cell
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/741>
2026-08-25 15:42:59 +00:00
Hari Rana ec967ea2b9 views/month-view-row: Add method for focusing adjacent event widget
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/741>
2026-08-25 15:42:59 +00:00
Hari Rana f7c4f7b25a views/month-view-row: Calculate spacings in code
Visually, this comes with the benefit of not having the first
and last visible event widgets take additional margins, as spacing
is only applied between event widgets.

This will also allow us to make use of gtk_widget_pick() without
having to rely on hardcoding 1 on the y axis.

The current approach has a one pixel margin at the top and bottom
of each event widget, which offsets the vertical position of
every event widget by one pixel. In order to pick the first
event widget, we'd want to call
gcal_month_cell_get_header_height() because this is where the
first event widget is placed. If we were to invoke
gtk_widget_pick() with (x, 0), where x is
half the width of the month cell, the returned value would be
NULL because gtk_widget_pick() does not account for margins,
so it would need to be (x, 1), with 1 hardcoded.

Since this patch removes that offset, we can simply use
(x, 0) without having to hardcode 1.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/813>
2026-08-19 09:39:33 -04:00
Hari Rana f19ad343de views/week-header: Add row spacing
This adds back the margins lost from event widgets, without
taking additional pixels on the first and last event widgets.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/813>
2026-08-19 09:37:58 -04:00
Hari Rana 1637997bd6 views/week-grid: Add margins to event widgets
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/813>
2026-08-19 09:37:28 -04:00
Hari Rana 256524ff4c events: Remove margin
In the next commits, gaps will be added onto appropriate widgets.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/813>
2026-08-19 09:34:29 -04:00
Hari Rana 7886ef6f19 views/month-view-row: Get header height during calculations
This is needed for the next commit, which adds gaps between
event widgets.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/813>
2026-08-19 09:25:14 -04:00
Hari Rana 4fc242fd7c views/agenda-view-day-row: Adjust focusability of row and event widget
For unknown reasons, the `::row-activated` signal is not emitted
whenever the user presses an activation button on the keyboard
such as Enter or Space, even though the list box row has focus.

Ideally, we want the list box rows to be activatable, so that
activating them will simply emit the "event-activated" signal and
pop up the popover.

Since this doesn't work, the next best thing is to make the event
widgets themselves focusable and the list box rows unfocusable.
This will unfortunately lose the ability to navigate with arrow
keys, as well as Home/End and Page Up/Down. However, the user will
at least be able to activate them and access events in
the agenda view.

A `FIXME` label has been added because this should be fixed as soon
as possible.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/807>
2026-08-14 21:40:58 +00:00
Hari Rana 506b07fe1c views/agenda-view-day-row: Describe row
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/807>
2026-08-14 21:40:58 +00:00
Hari Rana 63db10cc92 views/agenda: Make list items unfocusable
Without this, the entire row would become focusable, which is
an undesired functionality for people who navigate with a keyboard.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/807>
2026-08-14 21:40:58 +00:00
Hari Rana b4dd889615 flatpak: Apply more config options in evolution-data-server and libical
`WITH_CXX_BINDINGS` is deprecated in libical 4, so it's replaced with
`LIBICAL_CXX_BINDINGS`.

`LIBICAL_JAVA_BINDINGS=False` is required for libical 4.

Since we use `ENABLE_OAUTH2_WEBKITGTK4=OFF` in evolution-data-server,
we could also use `ENABLE_OAUTH2_WEBKITGTK=OFF` alongside.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/811>
2026-08-14 07:52:01 -04:00
Hari Rana 68d820b2f7 Revert "views/month-view: Remove offset"
For a while, we have been setting child visibility to false, which
hid the horizontal line separators. However, I started scrolling in
the month view today and came to realize that they were disappearing
sporadically when scrolling upwards.

This happens because we use the `box-shadow` CSS property to apply the
box shadow a pixel above the month view row, which keeps it visible
in the view even when the month view row itself is no longer in
the page. Adding a pixel fixes that.

This reverts commit f4702dde1f.
2026-07-28 08:14:43 -04:00
Hari Rana 5f21144fbb views/month-view-row: Additive inverse in right-to-left languages
"Additive inverse" basically means transforming a positive number
into a negative equivalent, or vice-versa; for example, from 5 to -5.

Instead of inverting conditions in right-to-left languages to
compare the X coordinate, a much simpler approach to this is to
normalize the X coordinate by applying additive inverse in
right-to-left languages.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/744>
2026-07-05 14:56:44 -04:00
Hari Rana 1f06a71ee0 views/month-cell: Set child visible instead of sensitive
When hovering over the bottom side of a month cell regardless of
the sensitivity state of the overflow button, it queries the
button's tooltip text. Using `gtk_widget_set_child_visible()`
fixes that issue.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/743>
2026-07-04 23:04:29 -04:00
Hari Rana cc6edfed79 views/month-cell: Replace overlay with box and empty bin
Since we don't make use of the overlay anymore, it's best to remove
it altogether.

This also changes the behavior of the widgets a bit: It adds an
empty AdwBin widget which expands vertically, allowing us to avoid
aligning the header and overflow button.

The pattern goes from reducible (where we deduct the overflow
height to retrieve the content) to additive (where we add the
overflow height to the content height), which requires us to
adapt GcalMonthViewRow with this new behavior.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/743>
2026-07-04 23:04:29 -04:00
Hari Rana f76eb428a7 event-editor/summary-section: Request for validation when editing summary row
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:24 -04:00
Hari Rana c0e41b8ca0 event-editor/event-editor-dialog: Add signal for requesting validation
This will be needed to make the Save button sensitive/insensitive.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:24 -04:00
Hari Rana 026f148dca event-editor/event-editor-dialog: Always grab focus to summary section
Now that the summary section is always focusable, even when the event is
non-writable, we can make it grab focus every time.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:23 -04:00
Hari Rana b051c30e1b event-editor/event-editor-dialog: Unset sensitiveness of widgets
Only GcalCalendarComboRow, GcalAttendeesSection, and GcalRemindersSection
remain unfocusable on read-only events.

In the case of GcalRemindersSection, we eventually want to allow setting
reminders regardless of the writable state of the event; however, since
dialog is centered around the assumption that a read-only event should
never be edited, which includes reminders, these changes will have to be
done in a separate merge request.

Closes: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/737>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:23 -04:00
Hari Rana cbf5d8e10b event-editor/schedule-section: Update editability of widgets
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:23 -04:00
Hari Rana b70763075b event-editor/notes-section: Update editability of text view
Related: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/737>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:19 -04:00
Hari Rana a83198b954 event-editor/summary-section: Update editability of widgets
Related: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/737>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 10:06:02 -04:00
Hari Rana f5ce577b36 event-editor/date-time-chooser: Add "editable" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 09:48:54 -04:00
Hari Rana 59a5f5f7b5 event-editor/date-chooser-row: Make menu button insensitive when row is uneditable
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 09:48:54 -04:00
Hari Rana 3219b98b1b event-editor/schedule-section: Set visible child name based on schedule type
This fixes a bug introduced by
https://gitlab.gnome.org/GNOME/gnome-calendar/-/commit/8bbaeb754b6b5b81e92173508ef20888d7c421a8
which forgot to update the page depending on the schedule type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/499>
2026-06-26 09:48:54 -04:00
Hari Rana ec5489b263 event-editor/event-editor-section: Remove GtkWidget overrides
Now that all GcalEventEditorSection subclasses override `event_set()`,
we can safely remove these overrides.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana 40337612e8 event-editor/event-editor-dialog: Set GcalEventEditorSection:dialog property to all sections
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana 9b4c5606ac event-editor/summary-section: Subclass GcalEventEditorSection
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana 11ac931d55 event-editor/schedule-section: Subclass GcalEventEditorSection
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana f8c4fb786f event-editor/reminders-section: Subclass GcalEventEditorSection
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana 082e829651 event-editor/notes-section: Subclass GcalEventEditorSection
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:09 -04:00
Hari Rana 61a3b9f869 event-editor/attendees-section: Subclass GcalEventEditorSection
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana 66e7d9b6d7 event-editor/event-editor-section: Turn it into an abstract class
Currently, GcalEventEditorSection is an interface that doesn't
really do much apart from requiring a property and providing
virtual methods.

This proposed approach turns it into an abstract class, derived
from AdwPreferencesGroup, which gives access to virtual methods
as well as public methods. It comes with the same benefits of
an interface, while sharing a lot of code that were duplicated
in the previous commits.

As a stopgap measure, it overrides several GtkWidget virtual
methods to smoothly transition without causing the commits
to break. These overrides will get removed in a later commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana da9b28cf93 event-editor/attendees-section: Remove GcalEventEditorSection implementation
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana 5dc7e4d639 event-editor/schedule-section: Remove GcalEventEditorSection implementation
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana d1c5a085bd event-editor/reminders-section: Remove GcalEventEditorSection implementation
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana 63191bea9e event-editor/notes-section: Remove GcalEventEditorSection implementation
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:08 -04:00
Hari Rana 09e5bd5859 event-editor/summary-section: Remove GcalEventEditorSection implementation
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:23:07 -04:00
Hari Rana d62c2386b8 event-editor/event-editor-dialog: Compare original event with edited event
This also takes the opportunity to rework the save process.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:22:32 -04:00
Hari Rana 854d991134 event-editor/attendees-section: Allow applying event when mapped
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:14:03 -04:00
Hari Rana a2bcde8ccb event-editor/schedule-section: Write to event directly
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:14:03 -04:00
Hari Rana 842f9939cf event-editor/reminders-section: Write to event directly
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:14:03 -04:00
Hari Rana af8a619eac event-editor/notes-section: Write to event directly
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:14:03 -04:00
Hari Rana 6e4062a9d6 event-editor/summary-section: Write to event directly
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:14:03 -04:00
Hari Rana b0d5cdbcb8 event-editor/event-editor-dialog: Store duplicate event instance
This is a preliminary step for moving the comparison and
application logic of each section into the dialog.

Essentially, the dialog will pass the duplicate event to each
section, and these sections will modify the event. If the user
presses "Save", the dialog will compare the edited event to
the original event, and apply if they are different.

This also adds the `get_event()` method which will be used
in the future.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:13:24 -04:00
Hari Rana 6cd8d631f5 event-editor/event-editor-dialog: Rename set_event() to present_event()
This allows us to avoid using `adw_dialog_present()` every time
`set_event()` is being invoked.

All the files using `set_event()` are updated accordingly.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/711>
2026-06-26 08:08:39 -04:00
Hari Rana a0b8f4b23e event-editor/event-editor-dialog: Remove unused struct members
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/784>
2026-06-26 07:54:24 -04:00
Hari Rana 2ee6dfc5e7 core/event: Add utility functions for checking equality
This adds:
- `gcal_event_alarms_equal()`
- `gcal_event_schedule_equal()`
- `gcal_event_strings_equal()`

We aren't going to make use of it yet, but eventually these functions
will be used for the event editor dialog, as well as writing tests for.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/783>
2026-06-26 07:09:52 -04:00
Hari Rana 8aa3b7442b event-editor/summary-section: Remove automatic focus grabbing when setting event
This is no longer needed as it was replaced by the
`grab_focus()` override.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/782>
2026-06-25 07:39:38 -04:00
Hari Rana 35580dc40c event-editor/event-editor-dialog: Explicitly grab focus on summary section
As described in the previous commit, this approach is more
predictable because the focus is decided in the same place.

The focus grabbing behavior is set after notifying
the `GcalEventEditorDialog:event` property as otherwise it would
not select the entire text in some occasions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/782>
2026-06-25 07:39:38 -04:00
Hari Rana 3271974b95 event-editor/summary-section: Override grab_focus()
This will allow for a cleaner and more predictable focus behavior,
as this will give the capability to the dialog to grab focus
on either the "Done" button or summary section depending on the
writability, as opposed to the current approach, where the
summary section assumes that it is already writable and grabs focus,
which then the dialog sets focus on the "Done" button.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/782>
2026-06-25 07:39:38 -04:00
Hari Rana 3c67de4076 event-editor/attendee-details-page: Use AdwPreferencesGroup API
AdwPreferencesGroup now has the `bind_model()` method, so it's
best to just use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:35 -04:00
Hari Rana cda1362c59 event-editor/event-editor-section: Add AdwPreferencesGroup as prerequisite
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:35 -04:00
Hari Rana 240dc649ce event-editor/summary-section: Inherit AdwPreferencesGroup
This is a prerequisite to make GcalEventEditorSection require
inheriting AdwPreferencesGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:35 -04:00
Hari Rana cbee9bbb60 event-editor/schedule-section: Inherit AdwPreferencesGroup
This is a prerequisite to make GcalEventEditorSection require
inheriting AdwPreferencesGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:34 -04:00
Hari Rana 60c9989e4b event-editor/attendees-section: Inherit AdwPreferencesGroup
This is a prerequisite to make GcalEventEditorSection require
inheriting AdwPreferencesGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:34 -04:00
Hari Rana c595d8a6e8 event-editor/reminders-section: Inherit AdwPreferencesGroup
This is a prerequisite to make GcalEventEditorSection require
inheriting AdwPreferencesGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:34 -04:00
Hari Rana fbea369c0f event-editor/notes-section: Inherit AdwPreferencesGroup
The end goal is to make GcalEventEditorSection require inheriting
AdwPreferencesGroup. Given that most widgets utilizing
GcalEventEditorSection inherit another widget, we first want to
change and adapt the inheritance, and then bump the requirement
of the interface.

These changes will be made incrementally, starting
with GcalNotesSection.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:34 -04:00
Hari Rana 568227346b event-editor/event-editor-dialog: Port to AdwPreferencesPage
Our use case is already handled by the `AdwPreferencesPage:banner`
property, which allows us to port the dialog to AdwPreferencesPage.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:34 -04:00
Hari RanaandJamie Gravendeel 4f037132fe event-editor/schedule-section: Use separate-rows property in all-day section
`separate-rows` already does what we want, and using that property
allows us to nesting AdwPreferencesGroup into a GtkBox widget.

Co-authored-by: Jamie Gravendeel <me@jamie.garden>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 14:10:28 -04:00
Hari Rana 8bbaeb754b event-editor/schedule-section: Use AdwInlineViewSwitcher
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/781>
2026-06-23 13:02:50 -04:00
Hari Rana 701c6e3cb5 event-editor/event-editor-dialog: Install actions in widget class
This is a prerequisite in order to enable/disable actions using
`gtk_widget_action_set_enabled()`, is something we'll be making
use of in the future.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/779>
2026-06-23 12:55:12 -04:00
Hari Rana 3d768fa748 event-editor/attendee-row: Remove unused GtkBox
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/779>
2026-06-23 12:55:12 -04:00
Hari Rana eff6aeb6d6 event-editor/attendee-details-page: Chain up finalize()
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/779>
2026-06-23 12:55:12 -04:00
Hari Rana 50ee469d42 core/event: Add remove_alarm() prototype to header
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/780>
2026-06-23 12:48:03 -04:00
Hari Rana 5a171ea813 flatpak: Use runtime's GCR
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/778>
2026-06-22 21:37:26 +00:00
Hari Rana 48d7037311 about: Explicitly state when app is not contained inside Flatpak
At the moment, whenever the user is not running under Flatpak,
the "Flatpak:" label won't show up, which confused me for a moment
when looking at https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1609,
as I assumed the "Flatpak:" label showed up whether it was running
under Flatpak or not, making me assume that they did not go in the
Troubleshooting section.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/777>
2026-06-19 13:10:17 -04: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
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
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
Hari Rana 2bc9c96095 flatpak: Use intltool provided by shared-modules
Launchpad is currently dealing with DDoS issues. The shared-module
repository contains mirrors which can be useful for those who are
unable to build intltool.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/756>
2026-05-03 15:25:44 +00:00
Hari Rana 92b74849bf views/month-cell: Add AdwBin as parent to methods retrieving height of widget
This is future-proofing the uncertain decision of removing
GtkWidget's `margin-*` properties in the future, which is what
we're currently using to retrieve the height of certain widgets.

Whenever the intention is to get the entire size of a particular
widget, including properties that contribute to layout such as
margins, the `get_width()`/`get_height()` methods don't include
these properties during calculations. However, getting the size
of the parent widget will include them in its entirety.

As such, the safest path is to use AdwBin as the parent to the
respective widgets, and using it to retrieve the height.

See: <https://gitlab.gnome.org/GNOME/gtk/-/issues/6556#note_2056432>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/739>
2026-04-03 16:37:14 -04:00
Hari Rana 9f8faf0db0 data: Add agenda view screenshot
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/718>
2026-04-01 11:20:44 +00:00
Hari Rana 49e0521b67 views/week-view: Adapt to high contrast
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/710>
2026-03-31 21:55:32 -04:00
Hari Rana c0063f29c8 calendar-management/calendars-page: Delete calendar during unmapping
The previous commit reintroduced
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1270

In order to solve this without destroying the dialog,
the calendar is forcefully deleted when unmapping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00