authPrompt: Use placeholder label to avoid layout changes

We don't want to show a caps-lock warning when showing a non-password
entry, but we also don't want the layout to jump when changing the
label's visibility.

Achieve that by inserting an empty placeholder label that we can
show whenever the caps-lock warning is hidden.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2215
This commit is contained in:
Florian Müllner 2020-02-14 21:10:04 +01:00
parent 41da4b0681
commit 0d766dcf70

View File

@ -85,12 +85,19 @@ var AuthPrompt = GObject.registerClass({
this._initEntryRow(); this._initEntryRow();
let capsLockPlaceholder = new St.Label();
this.add_child(capsLockPlaceholder);
this._capsLockWarningLabel = new ShellEntry.CapsLockWarning({ this._capsLockWarningLabel = new ShellEntry.CapsLockWarning({
x_expand: true, x_expand: true,
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
}); });
this.add_child(this._capsLockWarningLabel); this.add_child(this._capsLockWarningLabel);
this._capsLockWarningLabel.bind_property('visible',
capsLockPlaceholder, 'visible',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN);
this._message = new St.Label({ this._message = new St.Label({
opacity: 0, opacity: 0,
styleClass: 'login-dialog-message', styleClass: 'login-dialog-message',