From 5fc456d9d9413d8c5c87569dc9c57fc19d93c5f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 10 Jul 2019 17:18:16 +0200 Subject: [PATCH] userWidget: Handle non-square icons gracefully We currently assume that user icons are square, which is the case when set by the users settings panel, but not enforced by AccountsService. Handle that case by moving the pixel size back to the actor and using an appropriate background-size style property of 'cover' (which means the smallest dimension of the image is scaled to fit the desired size). https://gitlab.gnome.org/GNOME/gnome-shell/issues/1144 --- js/ui/userWidget.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/ui/userWidget.js b/js/ui/userWidget.js index 232a5f181..a24f37a3f 100644 --- a/js/ui/userWidget.js +++ b/js/ui/userWidget.js @@ -46,9 +46,13 @@ var Avatar = class { if (iconFile) { this.actor.child = null; + let { scaleFactor } = St.ThemeContext.get_for_stage(global.stage); + this.actor.set_size( + this._iconSize * scaleFactor, + this._iconSize * scaleFactor); this.actor.style = ` background-image: url("${iconFile}"); - background-size: ${this._iconSize}px`; + background-size: cover;`; } else { this.actor.style = null; this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',