[gnome-control-center/user-accounts-always-load-avatar-images: 10/10] user-accounts: Load avatar image files in "Other users" list
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/user-accounts-always-load-avatar-images: 10/10] user-accounts: Load avatar image files in "Other users" list
- Date: Wed, 2 Mar 2022 16:04:26 +0000 (UTC)
commit 4b21c5b056d311f59c95cf08eb9d309e706662de
Author: Felipe Borges <felipeborges gnome org>
Date: Wed Feb 23 11:30:38 2022 +0100
user-accounts: Load avatar image files in "Other users" list
We were checking for the existance of an image file as avatar when
setting up the main avatar widget in the page, but the same wasn't
done for the avatars displayed in the "Other users" list. These
were AdwAvatars simply initialized to use the user initials.
Now we load the user image (if it exists) and it will fallback to
initials when an image isn't set.
Fixes #1658
panels/user-accounts/cc-user-panel.c | 43 ++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 17 deletions(-)
---
diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c
index 9590bb87b..caae211e9 100644
--- a/panels/user-accounts/cc-user-panel.c
+++ b/panels/user-accounts/cc-user-panel.c
@@ -197,6 +197,29 @@ get_real_or_user_name (ActUser *user)
return name;
}
+static void
+setup_avatar_for_user (AdwAvatar *avatar, ActUser *user)
+{
+ const gchar *avatar_file;
+
+ adw_avatar_set_custom_image (avatar, NULL);
+ adw_avatar_set_text (avatar, get_real_or_user_name (user));
+
+ avatar_file = act_user_get_icon_file (user);
+ if (avatar_file) {
+ g_autoptr(GdkPixbuf) pixbuf = NULL;
+
+ pixbuf = gdk_pixbuf_new_from_file_at_size (avatar_file,
+ adw_avatar_get_size (avatar),
+ adw_avatar_get_size (avatar),
+ NULL);
+ if (pixbuf) {
+ adw_avatar_set_custom_image (avatar,
+ GDK_PAINTABLE (gdk_texture_new_for_pixbuf (pixbuf)));
+ }
+ }
+}
+
static GtkWidget *
create_user_row (gpointer item,
gpointer user_data)
@@ -209,7 +232,8 @@ create_user_row (gpointer item,
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), TRUE);
adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row),
get_real_or_user_name (user));
- user_image = adw_avatar_new (48, get_real_or_user_name (user), TRUE);
+ user_image = adw_avatar_new (48, NULL, TRUE);
+ setup_avatar_for_user (ADW_AVATAR (user_image), user);
adw_action_row_add_prefix (ADW_ACTION_ROW (row), user_image);
return row;
@@ -770,7 +794,6 @@ show_user (ActUser *user, CcUserPanel *self)
{
g_autofree gchar *lang = NULL;
g_autofree gchar *name = NULL;
- const gchar *avatar_file;
gboolean show, enable;
ActUser *current;
#ifdef HAVE_MALCONTENT
@@ -779,22 +802,8 @@ show_user (ActUser *user, CcUserPanel *self)
self->selected_user = user;
- adw_avatar_set_custom_image (self->user_avatar, NULL);
- adw_avatar_set_text (self->user_avatar, get_real_or_user_name (user));
+ setup_avatar_for_user (self->user_avatar, user);
cc_avatar_chooser_set_user (self->avatar_chooser, user);
- avatar_file = act_user_get_icon_file (user);
- if (avatar_file) {
- g_autoptr(GdkPixbuf) pixbuf = NULL;
-
- pixbuf = gdk_pixbuf_new_from_file_at_size (avatar_file,
- adw_avatar_get_size (self->user_avatar),
- adw_avatar_get_size (self->user_avatar),
- NULL);
- if (pixbuf) {
- adw_avatar_set_custom_image (self->user_avatar,
- GDK_PAINTABLE (gdk_texture_new_for_pixbuf (pixbuf)));
- }
- }
gtk_label_set_label (self->full_name_label, get_real_or_user_name (user));
gtk_editable_set_text (GTK_EDITABLE (self->full_name_entry), gtk_label_get_label
(self->full_name_label));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]