Commit Graph
100 Commits
Author SHA1 Message Date
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
Hari Rana 19171e5540 gui/event-widget: Position event popover to the pointer's
Currently, the event popover will always set its position to the
center of the event widget. This becomes an undesirable behavior
with long(er) event widgets, as clicking the edges will require
the user to physically move their pointer all the way to the
popover, which may be challenging depending on the distance.

This addresses this problematic behavior by positioning the popover
right above the pointer only when the event is a multi-day event,
and when the event widget is not inside a GtkListBox widget.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/677>
2026-02-11 09:49:08 -05: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
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 4c9d7e5a79 build: Depend on GTK4 4.21.2
We'll use the new "prefers-reduced-motion" property in GtkSettings.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:46:55 -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
Hari Rana 81990357fe quick-add-popover: Make rows behave like radio buttons
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:30 -03:00
Hari Rana c624c9b53b quick-add-popover: Rework population and update
This emits the `changed` signal, allowing us to filter out a wider
variety of calendars. It also allows us to remove the loops
that needed to re-run every time the user changed the default
calendar or closed the popover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:29 -03:00
Hari Rana b83498cb1f quick-add-popover: Use calendar row widget
The calendar row widget also makes it easy for us to display
hidden calendars.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:42:39 -03:00
Hari Rana 7e63f5f7e2 calendar-row: Add APIs
Since the calendar row widget is becoming an expandable widget,
several APIs were added to the widget:
- `gcal_calendar_row_get_calendar`
- `gcal_calendar_row_add_suffix`
- `gcal_calendar_row_get_first_suffix_child`
- `gcal_calendar_row_add_header_class`
- `gcal_calendar_row_remove_header_class`

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:18 -03:00
Hari Rana f8c5751174 calendar-row: Rename calendar-combo-row-item to calendar-row
Currently, the quick add popover implements its own row
widget for each calendar, which duplicates tons of unnecessary
code. This commit streamlines the calendar-combo-row-item row
widget to make it reusable elsewhere.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:07 -03:00
Hari Rana 324bde2c72 quick-add-popover: Port to libadwaita widgets and merge stack pages
Both stack pages are merged into one page to avoid additional
cycling through pages.

`GtkListBoxRow`s were replaced by `AdwActionRow`s with
`GtkCheckBox`es as children.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/90,
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1003

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:33:23 -03:00
Hari Rana ac6cccee53 quick-add-popover: Port to GListModel
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:31:24 -03:00
Hari Rana 0c09e41796 gui/quick-add-popover: Specify const for strings using gettext
`gettext` returns a static string.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:40:44 -04:00
Hari Rana c3098bf23a gui/quick-add-popover: Automatically free strings
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:39:05 -04:00
Hari Rana eefea2f7f4 gui/quick-add-popover: Handle memory leaks
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:31:23 -04:00
Hari Rana 3a93a4004d views/month-popover: Use adw_lerp() function
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/650>
2025-10-17 17:08:42 +00:00
Hari Rana 9213a4fbe4 gui/window: Only set focus when popover is explicitly closed
The window would either set focus to the event widget or a
focusable ancestor, no matter how the event popover was being
closed.

This caused a major accessibility regression where,
whenever the event editor dialog opened from the event
popover, the window set focus to the event widget instead of
the content inside the dialog, which made the dialog incapable
of navigating through until the dialog was focused. This also
prevented mnemonics from being triggered.

This patch addresses that bug by only setting focus whenever
the popover is being closed explicitly; as in, when the user
presses outside the popover to hide it or pressing escape.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1398
2025-08-29 21:45:59 -06: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
Hari Rana 27b4237410 css: Reduce week number background opacity
The week numbers' foreground and background colors are relatively
low in contrast; decreasing the background color's opacity heavily
helps with contrast.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624>
2025-08-18 20:00:19 -04:00
Hari Rana 6252069d26 css: Adjust week number borders
We should generally avoid setting padding without subtracting with
the border width. On high contrast style, week numbers receive a
1px border width without subtracting it from the padding. This
causes a layout shift and makes the sidebar wider.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624>
2025-08-18 20:00:19 -04: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 f887ea10f8 css: Remove unused style classes
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624>
2025-08-18 18:37:29 -04:00
Hari Rana 8889139b82 gui/month-view: Use dimmed style class
Instead of manually setting the font color for the month view's
week header, the `dimmed` style class dims labels according to the
HIG while simultaneously accommodating high contrast users.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1437

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/624>
2025-08-18 18:37:29 -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
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
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
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
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 11ac0e43e8 css: Use box shadow for month cells
This is probably a better approach for getting month separators,
because box shadows don't affect the layout, unlike borders. Since
GtkStyleContext is deprecated, it makes more sense to use properties
that don't have any side effects with physical size.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/601>
2025-07-05 18:05:04 -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 a8db7b44a4 flatpak: Bump libical dependency
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/613>
2025-07-04 10:22:45 -04:00
Hari Rana 1b51a5073f build: Bump minimum libadwaita version to 1.8.alpha
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/611>
2025-07-02 21:28:02 -04: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
Hari Rana 6ab0ef7386 gui/event-widget: Set child depending on the orientation
Commit https://gitlab.gnome.org/GNOME/gnome-calendar/-/commit/73abcf19b0e70fb6fdd45394169b00e21ea0734a
introduced a bug where it uses the wrong widget on
vertical orientation.

This patch fixes that bug by using the correct widget
for their respective orientation. It also removes the use of
AdwClamp, as it was clamping labels above a certain height requested.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1414

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/607>
2025-06-30 15:00:59 -04:00
Hari Rana b368e1f674 views/agenda-view: Set accessible properties for list items
This is needed to have the screen reader read event information
out loud.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/606>
2025-06-30 16:18:06 +00:00
Hari Rana d809192dd5 common/date-chooser: Wrap months
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:46 -04:00
Hari Rana 7a40a3be6a common/date-chooser: Add accessible labels to GcalMultiChoice widgets
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:27 -04:00
Hari Rana 7be43df099 event-editor/multi-choice: Always set focus-visible flag when focused
This is to ensure that the focus ring never disappears until
the toggle button is unfocused.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:24 -04:00
Hari Rana b4853da249 event-editor/multi-choice: Add keyboard interaction
A significant portion of the behavior was guided by the
"Date Picker Spin Button Example" page in the
ARIA Authoring Practices Guide (APG):
https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/examples/datepicker-spinbuttons/

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:21 -04:00
Hari Rana 5628a5f311 event-editor/multi-choice: Make up/down buttons unfocusable
Spin buttons' increment/decrement buttons are standardly not made
to be accessible/focusable.

This copies the behavior from the GtkSpinButton widget.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:19 -04:00
Hari Rana 2a7a4e3b30 event-editor/multi-choice: Implement GtkAccessibleRange
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:17 -04:00
Hari Rana 70b9fde162 event-editor/multi-choice: Implement GtkAccessible
This is needed to have the toggle button communicate with the
screen reader to use the parent widget to retrieve accessible
information, rather than the toggle button itself.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:15 -04:00
Hari Rana 196f86b4f4 event-editor/multi-choice: Use g_assert in public methods
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:11 -04:00
Hari Rana d1a8e072b2 event-editor/multi-choice: Add file name to header
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:09 -04:00
Hari Rana 5ca18c7a34 event-editor/multi-choice: Document public methods
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:51:07 -04:00
Hari Rana a6015bd357 event-editor/multi-choice: Properly space out code
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:50:58 -04:00
Hari Rana 640308652b event-editor/multi-choice: Comment code sections
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603>
2025-06-29 08:50:41 -04:00
Hari Rana 4ec25d8775 reminders-section: Add focus ring
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/399>
2025-06-29 01:03:00 +00:00
Hari Rana f40ed5b90c reminders-section: Modernize popover
This makes the alarms popover look much closer to the AdwComboRow widget.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/399>
2025-06-29 01:03:00 +00:00
Hari Rana 40cbf66c1b gui/calendar-list: Turn row into a checkbox
Using a GtkCheckButton widget as a child as we've been doing was a
little bit too much, considering it was overachieving its use case.
Given the nature of a button, the widget was also capable of
being targetable, focusable, and activatable, which forces
a keyboard user to tab an additional time to get to the
next row in the list.

This patch introduces a new method by turning the entire row into a
check button widget, with an image widget that becomes visible or
invisible, which addresses the issues raised above. This also
avoids binding properties bidirectionally, as the image is only
used for decorative purposes.

https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542#note_2459629

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/588>
2025-06-28 20:27:28 +00:00
Hari Rana 2ee31847fa gui/event-widget: Use default value
The default value for GtkGestureSingle:button is 1:
https://docs.gtk.org/gtk4/property.GestureSingle.button.html

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 14:01:11 -04:00
Hari Rana 73abcf19b0 gui/event-widget: Use AdwClamp
AdwSqueezer is deprecated.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 14:01:11 -04:00
Hari Rana e8249e9e43 gui/event-widget: Update pressed state
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 14:01:08 -04:00
Hari Rana 96fef80ca2 gui/event-widget: Set has-popup accessible property to true
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 13:49:16 -04:00
Hari Rana 73e1baad04 gui/event-widget: Set accessible role as toggle button
Since it's a toggleable button with a popup, it makes more sense
to set its accessible role as GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 13:49:08 -04:00
Hari Rana ff17056108 gui/event-widget: Use GtkBoxLayout
The GTK inspector would always target and inspect the `main_widget`
box rather than the parent widget, which became repetitive to keep
pressing the "Parent widget" button when working with accessibility,
as the parent widget contained the accessible properties and states.
GtkBoxLayout solves that by allowing us to get rid of the box
completely, which exclusively makes it inspect the widget we
actually want to target.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/587>
2025-06-28 13:48:59 -04:00
Hari Rana 6cd138974f views/week-header: Port to gtk_widget_compute_point
`gtk_widget_translate_coordinates` is deprecated.
2025-05-21 01:21:38 -03:00
Hari Rana 2bfa881c2d views/week-grid: Port to gtk_widget_compute_point
`gtk_widget_translate_coordinates` is deprecated.
2025-05-21 01:21:38 -03:00
Hari Rana a25b129643 views/month: Disallow moving focus out of the view with arrow keys 2025-05-21 01:17:33 -03:00
Hari Rana ed1db0bf72 views/month: Move out of the view when pressing tab
This makes it so the user can easily skip the entire month view
by pressing tab within the month view. This means, events can only
be accessed with arrow keys in the month view.
2025-05-21 01:14:17 -03:00
Hari Rana 1ab79d0cc8 views/month: Set all non-visible rows as unfocusable
When tabbing into the month view, the keyboard focus would go
to the first week row in the widget hierarchy, rather than the
visible row. Setting the `GtkWidget:can-focus` property to
FALSE on every non-visible row only allows keyboard focus
within the visible rows.
2025-05-21 01:13:38 -03:00
Hari Rana 8c02d0ce24 views/month: Use macros for first and last visible row indexes 2025-05-20 22:33:43 -04:00
Hari Rana 3d7197d3cd gui/window: Set parent widget as last focus when event widget is unfocusable
When selecting an event with a pointer, the keyboard-focused widget
was being set instead of the last focus widget, which was
then refocused after the event popover closed.

This patch fixes that bug by only setting the parent widget as
the last focus widget if the event widget itself is unfocusable,
like in the agenda view. The `GtkWidget:focus-on-click` property
is already enabled, so it takes care of refocusing the event
widget if it's focusable.

Commit https://gitlab.gnome.org/GNOME/gnome-calendar/-/commit/a3fb57939a307f5b661cc2f205e562f43a0a31fa
technically fixed https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/915,
but this patch solidifies the commit.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/915
2025-05-05 12:05:41 -04:00
Hari Rana 02a7b13043 gui/event-widget: Add focus ring 2025-04-30 21:44:46 -03:00
Hari Rana 0aaf13626c views/agenda: Only focus rows
This is to avoid selecting the event widget twice, while still
being able to use the GtkListBoxRow's features.
2025-04-30 21:43:43 -03:00
Hari Rana a3fb57939a gui/event-widget: Implement button features
This implements button functionality to make it able to focus
and activate it. This also sets the appropriate accessibility
role and labels/descriptions.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
2025-04-30 21:23:44 -03:00
Hari Rana 336ecd9ec3 css: Add focus ring custom properties
The values were mostly copied from libadwaita's, but with the
intention to easily add focus rings to custom widgets if desired.
2025-04-21 13:32:50 -04:00
Hari Rana a09c02591e event-editor/notes: Add height-request
The larger physical size of the text view helps convey that it's
a text box, and not a regular button or list box row.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1081
2025-04-21 13:32:49 -04:00
Hari Rana 445000b3cc event-editor/notes: Add 'focused' CSS class when focused
This mimics what GtkEntryRow does, and allows for an always visible
focus ring when the notes text view has focus.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1081
2025-04-21 13:32:49 -04:00
Hari Rana 140dd3b145 event-editor/notes: Make it an AdwPreferencesRow 2025-04-21 13:32:45 -04:00
Hari Rana 9281b1b964 css: Use CSS variables for linear gradients 2025-04-19 15:49:02 -04:00
Hari Rana 155664b67c css: Rewrite monthcell section 2025-04-19 10:40:26 -04:00
Hari Rana 5cd917f0ed css: Consistently indent CSS 2025-04-18 23:30:37 -04:00
Hari Rana aa343688cd css: Adjust placements to avoid re-declaring properties 2025-04-18 23:29:24 -04:00
Hari Rana c24c486130 css: Remove unnecessary declarations 2025-04-18 23:29:24 -04:00
Hari Rana 53bb697812 css: Port to custom properties 2025-04-18 23:29:17 -04:00
Hari Rana 4fb3a69313 month-popover: Add Escape trigger action 2024-12-16 18:14:11 -03:00
Hari Rana 8c8bea1cf0 month-popover: Add "popdown" action 2024-12-16 18:11:59 -03:00
Hari Rana 415903f584 month-popover: Grab focus to New Event button at popup 2024-12-16 18:07:04 -03:00
Hari Rana a0ba5552fd flatpak: Use local directory in gnome-calendar module
This is mainly beneficial for those who build flatpaks using
`flatpak-builder`, but it won't affect GNOME Builder users.
2024-11-16 08:15:41 -05:00
Hari Rana 1a5d9ca2b7 flatpak: Move Flatpak manifest path to build-aux
Most projects have the manifest at the root of the `build-aux`
directory, so let's just do that
2024-11-16 08:15:34 -05:00
Hari Rana d7131d5141 import: Only list writable calendars 2024-08-23 13:46:00 -03:00
Hari Rana 26d34930b6 event-editor: Only list writable calendars 2024-08-23 13:46:00 -03:00
Hari Rana 8ff3a843b3 utils: Add function to create writable-only calendars lists 2024-08-23 13:46:00 -03:00
Hari Rana 00cf2a735d event-popover: Rework UI and code
This builds on top of the existing UI/code, while adding a few improvements and
behavioral changes:

- The popover displays the changes-prevent icon when the even is read-only.
- Each section is properly separated with `GtkSeparator`s, with equal amount of
top and bottom margins.
- Location and Meetings section are mutually exclusive; only one is shown.
- When an event has no event note, the popover will always display that there's no
description.
- `GcalMeetingRow` has been ported to `GtkListBoxRow`.
- The action button adapts its icon and tooltip text depending on the event
permission.
2024-07-22 16:20:57 -06:00
Hari Rana 195c860d20 doap: Add new maintainer and developer 2024-07-17 10:32:47 -04:00
Hari Rana 0c8e1834f7 about, appdata: Port to AdwAboutDialog.new_from_appdata
This removes a lot of duplicated code, as we can simply reuse the
appdata file. It will also allow us to add release notes without
needing to rewrite them. A simple update in the
`adw_about_dialog_new_from_appdata` method will take care of
displaying the release notes.

This also renames the appdata file from `appdata.xml` to
`metainfo.xml`, as `appdata.xml` is considered a legacy filename.
2024-04-26 12:56:14 +00:00
Hari Rana 65bb78f11a edit-calendar-page: Improve location row
This changes the tooltip text display area uniquely to the
subtitle label, and excludes HTML elements and attributes
from accessibility labels.
2024-04-26 12:41:47 +00:00