diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-16 17:28:17 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-16 17:28:17 -0300 |
commit | f04c4fb119ec95f4732868b17a50a27767350f69 (patch) | |
tree | 27e45607354d74f4becc2d6b1f013cf81e37cc86 | |
parent | f0d74ddba337e621bce4942111f89180562fe61a (diff) | |
download | gnome-calendar-f04c4fb119ec95f4732868b17a50a27767350f69.tar.gz |
event-popover: Update to GtkUriLauncher
And bump the GTK dependency to 4.10
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/gui/gcal-event-popover.c | 30 |
2 files changed, 26 insertions, 6 deletions
diff --git a/meson.build b/meson.build index b08c4470..5e02aeec 100644 --- a/meson.build +++ b/meson.build @@ -165,7 +165,7 @@ libecal_dep = dependency('libecal-2.0', version: '>= 3.45.1') libsoup_dep = dependency('libsoup-3.0') libadwaita_dep = dependency('libadwaita-1', version: '>= 1.2.alpha') glib_dep = dependency('glib-2.0', version: '>= 2.67.5') -gtk_dep = dependency('gtk4', version: '>= 4.6.0') +gtk_dep = dependency('gtk4', version: '>= 4.10.0') gio_dep = dependency('gio-2.0', version: '>= 2.58.0') gweather_dep = dependency('gweather4') geoclue_dep = dependency('libgeoclue-2.0', version: '>=2.4') diff --git a/src/gui/gcal-event-popover.c b/src/gui/gcal-event-popover.c index 314a98c0..a1bc1161 100644 --- a/src/gui/gcal-event-popover.c +++ b/src/gui/gcal-event-popover.c @@ -512,19 +512,39 @@ on_edit_button_clicked_cb (GtkButton *edit_button, } static void +on_uri_launched_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) +{ + g_autoptr (GcalEventPopover) self = user_data; + g_autoptr (GError) error = NULL; + + if (!gtk_uri_launcher_launch_finish (GTK_URI_LAUNCHER (source_object), result, &error)) + { + g_warning ("Error launching URI: %s", error->message); + return; + } + + gtk_popover_popdown (GTK_POPOVER (self)); +} + +static void on_join_meeting_cb (GcalMeetingRow *meeting_row, const gchar *url, GcalEventPopover *self) { + g_autoptr (GtkUriLauncher) uri_launcher = NULL; GtkWindow *window; - window = GTK_WINDOW (gtk_widget_get_native (GTK_WIDGET (self))); + window = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (self))); g_assert (window != NULL); - gtk_show_uri (window, url, GDK_CURRENT_TIME); - - /* For some reason, gtk_popover_popdown() crashes when called here */ - gtk_widget_set_visible (GTK_WIDGET (self), FALSE); + uri_launcher = gtk_uri_launcher_new (url); + gtk_uri_launcher_launch (uri_launcher, + window, + NULL, + on_uri_launched_cb, + g_object_ref (self)); } static void |