From 011d8a29b7002fb521e5bb74b3d7757c17da976d Mon Sep 17 00:00:00 2001 From: Anton Lazarev Date: Sat, 16 Dec 2023 11:18:24 -0800 Subject: [PATCH] calls-contacts-row: AdwAvatar API changes https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/migrating-libhandy-1-4-to-libadwaita.html#adapt-to-adwavatar-api-changes This is *not* ideal, since it relies on Folks returning a GFileIcon internally, and it's also blocking. However, better to use something simple that compiles and works to begin with. Part-of: --- src/calls-contacts-row.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/calls-contacts-row.c b/src/calls-contacts-row.c index 96fdb30..0ac9b1e 100644 --- a/src/calls-contacts-row.c +++ b/src/calls-contacts-row.c @@ -90,7 +90,9 @@ static void avatar_changed_cb (CallsContactsRow *self) { FolksAvatarDetails *avatar_details; - GLoadableIcon *icon; + GLoadableIcon *loadable_icon; + g_autoptr (GdkTexture) icon = NULL; + g_autoptr (GError) error = NULL; g_assert (FOLKS_IS_INDIVIDUAL (self->item)); @@ -98,12 +100,18 @@ avatar_changed_cb (CallsContactsRow *self) if (avatar_details == NULL) return; - icon = folks_avatar_details_get_avatar (avatar_details); - - if (icon == NULL) + loadable_icon = folks_avatar_details_get_avatar (avatar_details); + if (!G_IS_FILE_ICON (loadable_icon)) { return; + } - adw_avatar_set_loadable_icon (ADW_AVATAR (self->avatar), icon); + icon = gdk_texture_new_from_file (g_file_icon_get_file (G_FILE_ICON (loadable_icon)), &error); + if (icon == NULL) { + g_print ("Failed to load avatar icon: %s", error->message); + return; + } + + adw_avatar_set_custom_image (ADW_AVATAR (self->avatar), GDK_PAINTABLE (icon)); } static void