Commit Graph
91 Commits
Author SHA1 Message Date
Zoey Ahmed c3635967bc window: Go back/forth views using hardware buttons
Refactor `on_window_previous_date_activated_cb` and
`on_window_next_date_activated_cb` into separate methods for going to
the prev/next view, to be used in the callbacks for both the
forward/back buttons in the UI, and for the `Gtk.GestureClick` callbacks
that listens for the hardware buttons to be pressed.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1494
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/682>
2026-01-15 17:02:17 +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
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
Georges Basile Stavracas Neto 4e7bc70450 gui/window: Cosmetics 2025-06-30 12:48:47 -03:00
Jamie Gravendeel c59965670d window: Use closures for view button icons
Fixes #1405

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/591>
2025-06-10 13:16:34 +02:00
Markus Göllnitz 7764b4dc0a window: reintroduce back and forward buttons
They reappear in the newest adaptive layout wireframes.

These were dropped in
54a8445abb ("window: Drop the back and forward buttons")

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/933

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz b728e5beae window: reorganise top and bottom toolbars
This lets users directly launch the calendar dialogue
instead of sidebar in narrow mode.

It moves the view switcher to bottom when narrow.

This also makes the sidebar overlaid for an intermediate
step between narrow and always optionally visible sidebar.

Further, it moves the today button to bottom with the new
navigation button at its old location.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1007

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz df182ed942 calendar-button: change widget to standalone list for sidebar
The sync entry is dropped here in favour of one in the
main menu.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz dec31cadd4 views: move agenda view to main area
This prepares for multiple views to be there for mobile
users, and is the location at which a dedicated agenda
view for desktop will be, once the current agenda view
is refactored to suit desktop use-cases better.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz 26db7e1627 window: only allow changing to visible view
As of now, every view is visible. That however, will
change with a subsequent commit moving the agenda view to
the main area and introducing breakpoint-dependent view
visibilities.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz 3dce4414a8 enums+window: make GcalWindowView iterators order and length agnostic
Currently, iterators over the GcalWindowView enum relied
on knowing the first and last enum value. But we know,
without knowing which is the first, that an enum in C
will assign 0 to its first value if not otherwise
specified.

And with the trick of a new end value similar to N_PROPS,
we can determine the amount of available window views
without relying on know which it is.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00:00
Markus Göllnitz 55df257ed1 window: remove unnecessary single-childed Gtk.Box
Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/542>
2025-06-08 09:59:00 +00: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
Georges Basile Stavracas Neto c42d987335 gui/window: Track focus widget when showing event preview
Store a weak pointer to whatever widget triggered the preview, and
restore when the popover is closed. This should fix the focused list
box row issue.
2025-04-30 21:43:52 -03:00
Titouan Real 42f891ff42 gui/event-editor: Add time zone selection
Creates a chooser managing a GDateTime. The chooser allows the user
to change the date, the time and the timezone independently.

This replaces the precedent GcalTimeChooserRow widget, because it is
easier to manage the different interactions with the user in a single
widget.

Co-authored-by: Georges Basile Stavracas Neto
<georges.stavracas@gmail.com>
2025-01-31 19:37:26 -03:00
Georges Basile Stavracas Neto 416a369f0c window: Remove unused error handling 2024-11-06 10:43:42 -03:00
Georges Basile Stavracas Neto 1e8fa097e0 window: Simplify CSS recalculation code 2024-11-06 10:36:46 -03:00
Enzo MAROS 0e09efc43c window: Create calendar-management-dialog on demand
When the user deletes a calendar in the calendar management dialog, a
popover allows them to undo the deletion. The calendar is fully deleted
only when the toast is dismissed or when the toast reaches its timeout.
When the user closes the calendar management dialog without dismissing
the toast and before the end of the timeout, the calendar can still be
manipulated for a short period of time.

To fix this, I removed the calendar-management-dialog from the UI of the
window, and made the window create and destroy the dialog on demand.
This forces the toast overlay to dismiss all toasts.
2024-10-22 12:35:45 +00:00
Diego Iván dfc5a9b970 drop-overlay: Introduce GcalDropOverlay
A new widget to perform drag and drop operations, for example,
dropping ICS files to the GcalWindow. It allows to overlay
a child for visual feedback when a DnD operation is done.

either in the main window or in the import dialog,
depending on whether none could be imported, or just some
of them.

It is based on Loupe's DragOverlay widget.

Closes #1257
2024-08-05 12:31:31 -03:00
Abdullahi Usman 094d1330f4 gcal-window: start selected day at 00:00:00(HH:MM:SS)
whenever a day is selected anywhere, let start it at 00:00:00

fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1256
2024-07-31 22:11:25 +01:00
Diego Iván 2038ff1da1 import-dialog: Port to AdwDialog
This also brings some other changes:

* Enables closing the window using Escape
* Fixes a few criticals

Closes #1258
2024-07-24 16:00:59 +00:00
Georges Basile Stavracas Neto de5f663373 style: Use CSS variables for event widget styling
This vastly simplifies the code!
2024-06-11 17:22:35 -03:00
Hari Rana 1494f7407f summary-section: Grab focus on summary entry when opening dialog
Due to an unintentional behavior change from AdwWindow to AdwDialog, the entry row must be focused after the dialog is displayed.
2024-02-24 22:53:54 +00:00
Georges Basile Stavracas Neto 350cc6479f window: Use adw_dialog_present() everywhere 2024-01-27 12:53:22 -03:00
Georges Basile Stavracas Neto b52b27eace event-editor: Turn into an AdwDialog 2024-01-27 12:38:35 -03:00
Georges Basile Stavracas Neto 72d3caaf94 calendar-management: Make it an AdwDialog
So it can behave like a bottom sheet when collapsed.
2024-01-27 12:32:12 -03:00
Rami Alkawadri ff3a08ba95 window: Use GcalRange in NewEventData 2024-01-15 19:31:56 +00:00
Georges Basile Stavracas Neto 95cc40d8a8 window: Use non-deprecated function
gtk_widget_compute_point() is the hot new thing.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 57fa7b2d48 window: Compare week for month view too
The new month view operates on week rows, so it makes sense to
perform the same check than that of the week view.

https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1063
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto d5a36d4ad2 view: Operate on ranges
This is the data struct we should be using everywhere now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 7e26bd5649 views/dazzling: Make it *the* month view
And move the old one to the attic. I'll keep the files around for
a while.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto d62bd1ae77 views/dazzling-month-view: Sketch timeline subscription
Right now it does nothing beyond reporting a range, but eventually
we'll populate this code.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 628d530ee5 window: Don't leave GcalDazzlingMonthView alone in the rain
It is now part of the family, and we can't just bully this view
like this anymore.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto a527bbe5dc views: Sketch out new month view
Nothing really works here, this is very WIP. It doesn't even show
events. Let's build from here.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto eb0c123b3a window: Use gtk_css_provider_load_from_string
And bump the GTK4 dependency version
2023-08-02 11:03:58 -03:00
Hari Rana 0646e00ee6 window: Correct typo 2023-07-21 20:00:45 -04:00
Victoria Lacroix aec45594f9 gcal-utils: Combine GNOME Settings launchers
This refactor combines the functions
gcal_utils_launch_online_accounts_panel and
gcal_utils_launch_datetime_settings_panel into a single function that
takes a panel ID as an argument.
2023-07-15 23:04:51 +00:00
Victoria Lacroix 3526cadcca gcal-window: datetime settings shortcut
Shortcut is added so that time-related system settings can be easily
accessed. See #1023

The code is largely just a copy-paste of the code that opens the
"Online Accounts…" menu.

Fixes #1023
2023-07-15 23:04:51 +00:00
Christopher Davis 34bf2f8e50 window: Use AdwNavigationSplitView and AdwBreakpoint
Replaces our leaflet with the new AdwNavigationSplitView
widget and AdwBreakpoint.
2023-06-17 20:18:07 +00:00
Christopher Davis 5b528032db window, toolbar-end: ToolbarEnd Fixes
* Use the sidebar's search entry for search shortcut when folded
* Set context on the sidebar's search entry
* Drop context GtkExpression from gcal-toolbar-end.ui
2023-06-17 20:18:07 +00:00
Georges Basile Stavracas Neto 3c672e0784 Move sync indicator into a separate widget
And move the new widget into the headerbar itself, instead of
the calendars button.
2023-05-23 19:01:19 -03:00
Georges Basile Stavracas Neto 9ea2ceef1a gui: Fix search from Shell overview 2023-03-05 11:53:50 -03:00
Georges Basile Stavracas Neto d6a216d0fa gui: Propagate context to GcalSearchButton
The people who introduced this code were not careful enough to
make sure the code they removed from GcalWindow was added back
in GcalToolbarEnd.

They also simply commented out some code instead of properly
reimplementing that.

I regret having trusted their code :(

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/880
2023-03-05 11:41:35 -03:00
Felipe Kinoshita 2805b414f8 general: Use gtk_widget_set_visible
A lot of places were using gtk_widget_show/gtk_widget_hide, but those
methods are deprecated since Gtk 4.10.

Let's use gtk_widget_set_visible instead.
2023-03-03 19:14:09 -03:00
Ray Strode 184d77ef4d window: Fix crash in toast animation
Every once in a while when I'm deleting an event gnome-calendar crashes.

I dug in a bit, and it seems the reason is
adw_toast_overlay_add_toast takes ownership of the passed in reference.

This is a little idiosyncratic for something that's not GInitiallyUnowned,
but it appears to be the API nonetheless.

GCalWindow assumes it owns the reference.

This commit makes both users of the toast happy by adding a ref call.
2022-10-14 13:38:03 -04:00
Milan Crha 8138619419 gcal-window: Event deletion aborts unfinished previous delete attempt
Cannot use g_clear_pointer() here, because it unsets the pointer first and
only then calls the free function, which means the test on self->delete_event_toast
NULL-ness would be satisfied in the on_toast_dismissed_cb(), thus the previous
event delete attempt would be "cancelled" internally.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/858
2022-10-05 18:44:25 +02:00
Christopher Davis a53787457e window: Use two today buttons instead of moving
This fixes an issue that caused flickering as the window
approached a size where it could fold.
2022-08-12 03:00:08 +00:00
Christopher Davis 04ead5fe85 window: Update today action enabeld state instead of button sensitivity
Button sensitivity is automatically updated with action state.
By taking advantage of this we can use the `win.today` action
on multiple buttons without needing to update every button.
2022-08-12 03:00:08 +00:00
Christopher Davis 9444d998ff general: Use GcalToolbarEnd for toolbars
For the sake of smooth adaptivity, we need the toolbar buttons
to be constant in both modes instead of moving places from one
mode to another. Instead of duplicating these groups of
buttons, we can refactor them into an object for toolbars
and use them in multiple places.

This commit takes the widgets from the end of the header bar and
creates `GcalToolbarEnd`, which is used in the header bar and the
mobile action bar.
2022-08-12 03:00:08 +00:00