userWidget: Fix avatar size

The texture cache now returns an actor with an appropriate ClutterContent
rather than a ClutterTexture. That actor uses the CONTENT_SIZE request
mode, which means that it will unconditionally request the preferred size
of the content. That is, setting an explicit size no longer has an effect.

Fix this by making sure the image is already loaded with the desired
dimensions.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1024
This commit is contained in:
Florian Müllner 2019-03-07 13:39:17 +01:00 committed by Marco Trevisan
parent 47915f8c11
commit b90f4d29a4

View File

@ -46,15 +46,14 @@ var Avatar = class {
if (iconFile) { if (iconFile) {
let file = Gio.File.new_for_path(iconFile); let file = Gio.File.new_for_path(iconFile);
this.actor.child = null; this.actor.child = null;
this.actor.style = 'background-image: url("%s");'.format(iconFile); this.actor.style = `
background-image: url("${iconFile}");
background-size: ${this._iconSize}px`;
} else { } else {
this.actor.style = null; this.actor.style = null;
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic', this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
icon_size: this._iconSize }); icon_size: this._iconSize });
} }
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this.actor.set_size(this._iconSize * scaleFactor, this._iconSize * scaleFactor);
} }
}; };