Hari Rana
d9f02cee20
views/week-view: Replace "context" property with context getter method
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702 >
2026-03-23 19:29:59 +00:00
Hari Rana
d0bdc9f2af
gui/month-view-row: Add upward variable
...
`!downward` is disambiguous and could merely be interpreted
as "not downward and not upward either". The `upward` variable
is explicit and describes literally the condition.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/729 >
2026-03-21 10:39:16 -04:00
Abdullahi Usman
24621b4d2b
agenda-view: Respect local timezone
...
convert events' time to equivalent local time before sorting.
fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1324
2026-03-17 20:09:23 -03:00
Zoey Ahmed
f99678aea9
views/month-view: Check if focused widget is month cell
...
This fixes an issue where pressing Shift + Up/Down while focused on the
overflow button will result in a bail out when asserting the focused
widget has a month cell ancestor:
```
GcalMonthView:ERROR:../src/gui/views/gcal-month-view.c:1002:on_key_controller_key_pressed_cb: assertion failed: (GCAL_IS_MONTH_CELL (month_cell))
Bail out! GcalMonthView:ERROR:../src/gui/views/gcal-month-view.c:1002:on_key_controller_key_pressed_cb: assertion failed: (GCAL_IS_MONTH_CELL (month_cell))
```
When navigating between month cells with a keyboard, focus is set
on respective month cells, so checking whether the ancestor
is a month cell or not is not only unnecessary, it also causes
bugs like the assertion above.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/720 >
2026-03-11 08:55:09 -04:00
Hari Rana
50e048c7e0
utils: Turn number of weekdays into a macro
...
While "7" may be obvious in the context of calendaring that
it represents the number of week days, it often gives me the
impression of it being a magic number when I'm hyperfocused on certain
parts of the codebase for several consecutive hours. Turning the
number into a macro helps me scan functions much more easily.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/674 >
2026-03-08 21:53:40 -04:00
Hari Rana
2638766d10
views/month-view: Focus adjacent cell when tabbing forward from the last event widget
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 21:11:16 -03:00
Hari Rana
e607a6bd2e
views/month-view: Clear marks when tabbing from a cell
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 21:11:16 -03:00
Hari Rana
4e54c18d06
views/month-view: Set focus to cell upon click release
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 21:11:16 -03:00
Hari Rana
3102766c51
views/month-view: Allow selecting cells
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 21:11:16 -03:00
Hari Rana
6c6dd46a89
views/month-view: Scroll view when out of bounds
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:18 -05:00
Hari Rana
c74fe74b97
views/month-view: Wrap cells
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:18 -05:00
Hari Rana
d8e44108ea
views/month-view: Display quick add popover when activating cell
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:18 -05:00
Hari Rana
3088b2260a
views/month-view-row: Add "activate-cell" signal
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:18 -05:00
Hari Rana
cd0138393f
views/month-cell: Add activate signal
...
This will be needed for keyboard navigation.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
471f81eb31
views/month-view-row: Implement focusing cells horizontally
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
e6e201d9aa
views/month-view-row: Implement focusing cells vertically
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
48e6607d43
views/month-view: Focus adjacent cell when pressing Ctrl+Tab
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
405f826252
views/month-view-row: Add method for focusing adjacent cells
...
This method allows to focus the month cells behind the event widgets.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
e88f77802b
views/month-cell: Override focus() virtual function
...
Without this patch, focus immediately goes to the "Previous Month"
button at startup, for some unknown reason.
So, as a workaround, skip focus if the root cannot retrieve the
current focused widget.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
80adbd0d23
views/month-cell: Inherit GtkWidget
...
AdwBreakpointBin, the parent, cannot set focus to itself. Instead
of focusing GtkOverlay, a child widget, we should instead inherit
GtkWidget to allow focusing that instead.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
b592f15b26
views/month-view: Add and update accessible elements
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/564 >
2026-03-03 18:35:17 -05:00
Hari Rana
caed41abdd
views/month-cell: Set accessibility properties for overflow button
...
This uses the "toggle-button" role instead of GtkToggleButton widget,
as GtkToggleButton remains toggled after closing the month popover.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:46 +00:00
Hari Rana
55aa6b8cc5
views/month-view: Focus last focused widget after closing month popover
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:46 +00:00
Hari Rana
8877d93059
views/month-popover: Add "closed" signal
...
This will be needed for setting focus to the last focused widget
after closing the popover.
Alternatively, we could have used the "unmap" signal, but this causes
a significant delay before setting focus to the last focused widget,
as it needs to complete the animation before it emits the
"unmap" signal.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:46 +00:00
Hari Rana
f3a6c93245
views/month-popover: Cycle focus through widgets
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:46 +00:00
Hari Rana
5c4a2b1ab0
views/month-popover: Only focus rows
...
This follows the same approach as
https://gitlab.gnome.org/GNOME/gnome-calendar/-/commit/0aaf13626c0bb7e8ade2d79e8b50132b3a583c9f?merge_request_iid=559
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:45 +00:00
Hari Rana
a1c8a9575e
views/month-popover: Make close button unfocusable
...
Close buttons throughout the app are unfocusable, so it's best
to keep that behavior consistent.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:45 +00:00
Hari Rana
295f154c76
views/month-view-row: Allow navigating through overflow buttons
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:45 +00:00
Hari Rana
9e8c9ae6e8
style: Add border radius to overflow button
...
This also adds the `.overflow` style class.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:45 +00:00
Hari Rana
d79a3260f0
views/month-cell: Add margins to overflow button
...
`margin-end` and `margin-bottom` have a 2px margin since the
`box-shadow` CSS property, which is used to mimic a border,
is offset by 1px.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:44 +00:00
Hari Rana
5ed93e73d4
views/month-cell: Add method for retrieving overflow button
...
This is needed for keyboard navigation, specifically for grabbing
focus and checking focus.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:44 +00:00
Hari Rana
24dd9be132
views/month-view: Allow skipping event widgets with Ctrl
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598 >
2026-03-01 19:35:44 +00:00
Hari Rana
bdfb4b609e
views/week-view-common: Port from GtkStyleContext to GtkSnapshot
...
GtkStyleContext methods are deprecated.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/707 >
2026-02-28 13:57:52 +00:00
Hari Rana
bb2fa2a63b
views/month-view-row: Find nearest vertical widget when tabbing
...
This was overlooked from the original commit:
https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598/diffs?commit_id=2ae3dd771cb9b2cc0d08a1cabb0b2f5359719d0b#c04c121e2c8eebcfb09fbcbeecff310223fe987f_708_767
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/706 >
2026-02-24 19:46:47 -05:00
Hari Rana
aecb17a59b
views/month-view-row: Only find first/last event widget if tabbing through another widget
...
This was overlooked from the original commit:
https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/598/diffs?commit_id=4ad8aeac65648f8d0873f8392cd8ab9109de5198#c04c121e2c8eebcfb09fbcbeecff310223fe987f_471_600
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/706 >
2026-02-24 19:46:35 -05:00
Hari Rana
e1c139782f
views/month-view-row: Implement keyboard navigation for event widgets vertically
2026-02-24 21:22:26 -03:00
Hari Rana
4901709e63
views/month-view-row: Implement keyboard navigation for event widgets horizontally
...
Ideally, we should be comparing if the Y coordinate of both the
candidate and focused widgets are identical, but given font
sizing issues with special characters such as emojis
(see https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1519 ),
it is safer to check if these widgets intersect vertically, as
otherwise a single pixel offset may cause keyboard focus to
completely skip event widgets.
2026-02-24 21:11:40 -03:00
Hari Rana
4ae0997c3f
views/month-view-row: Focus first and last event widgets
...
This also creates the FocusEventData struct, which stores
relevant information to compare and contrast event widgets.
2026-02-24 20:44:51 -03:00
Hari Rana
08e8318889
views/month-view: Allow navigating with Tab
...
This also notifies if keyboard navigation fails.
2026-02-24 20:05:15 -03:00
Fabian Hügel and Maximiliano Sandoval
da90b94bbd
views/month: Jump to first day of month with PgUp/PgDown
...
With this we always jump to the first day of the next/previous month
when pressing the PgDown/PgUp key in the month view.
Partially fixes the regression described in
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1103
Co-authored-by: Maximiliano Sandoval <msandova@gnome.org >
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/369 >
2026-02-21 20:22:15 -05:00
Zoey Ahmed
a38bcf9b68
month-cell: Fix accessibility warnings
...
* Add a tooltip to the overflow button.
* Change weather icon to have use the presentation accessible role
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1522
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/681 >
2026-01-29 02:21:42 +00:00
Hari Rana
6d47fc1db8
views/month-view-row: Add offset when allocating event widgets
...
The SEPARATOR_OFFSET constant is for the box shadow property
defined in month cells' CSS. Since the box-shadow property does
not contribute to layout, so these offsets need to be set manually.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676 >
2025-12-28 17:04:32 +00:00
Hari Rana
b0a5ff18d5
views/month-view-row: Compute exact width of event widgets
...
Currently, month cells are using `round()` to allocate the width,
whereas event widgets are using implicit double → int conversion,
which causes event widgets to be offset by a pixel, and thus
touches month cells' borders.
This new approach guarantees the exact width of the event widgets
by invoking `round()`.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676 >
2025-12-28 17:04:32 +00:00
Adrien Plazas
9c1a7fecfc
week-header: Fix end of week comparison
...
This fixes comparison of an event to the end of the week, so "end" can't
incorrectly be 7 anymore.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/835
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/672 >
2025-12-03 20:50:15 +01:00
Hari Rana
82198e0b8f
views/month-view: Smoothen discrete scrolling animation
...
The current animation duration paired with the ease-out-quad function
eases out imperceptibly fast (almost instantaneously), which makes the
overall animation feel laggy.
This patch addresses the aforementioned issue by increasing the
duration to 500ms. This then makes the ease-out-quad function ease
out relatively slowly, which is addressed by changing the function
to ease-out-quart - a function that eases out much quicker.
As a result, the animation should feel much more fluid and natural,
without giving the impression that it's 3 times slower.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1125
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670 >
2025-11-29 08:59:50 -05:00
Hari Rana
0a8bd0e994
views/month-view: Use ease-out-sine when snapping to row
...
It should feel a little bit more natural as it is eases out slower.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670 >
2025-11-29 08:59:33 -05:00
Hari Rana
bf86699f84
views/month-view: Check for user's reduced motion setting
...
"gtk-interface-reduced-motion" is the modern alternative to
"gtk-enable-animations" but gtk-enable-animations will be
kept as as a fallback.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670 >
2025-11-29 08:47:20 -05:00
Hari Rana
f4702dde1f
views/month-view: Remove offset
...
Since we're now relying on box shadows to render separators,
which don't contribute to layout, we no longer need to set some
sort of offset to compensate the separators.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/669 >
2025-11-27 11:52:31 +00: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