unlockDialog: Toggle between clock and auth prompt
Toggle between them when (1) tapping anythere on the screen, and (2) pressing any key. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872
This commit is contained in:
parent
cb914b8095
commit
cb89b7c0c4
@ -390,10 +390,17 @@ var UnlockDialog = GObject.registerClass({
|
|||||||
accessible_role: Atk.Role.WINDOW,
|
accessible_role: Atk.Role.WINDOW,
|
||||||
style_class: 'login-dialog',
|
style_class: 'login-dialog',
|
||||||
visible: false,
|
visible: false,
|
||||||
|
reactive: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
parentActor.add_child(this);
|
parentActor.add_child(this);
|
||||||
|
|
||||||
|
this._activePage = null;
|
||||||
|
|
||||||
|
let tapAction = new Clutter.TapAction();
|
||||||
|
tapAction.connect('tap', this._showPrompt.bind(this));
|
||||||
|
this.add_action(tapAction);
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
this._backgroundGroup = new Clutter.Actor();
|
this._backgroundGroup = new Clutter.Actor();
|
||||||
|
|
||||||
@ -470,6 +477,29 @@ var UnlockDialog = GObject.registerClass({
|
|||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vfunc_key_press_event(keyEvent) {
|
||||||
|
if (this._activePage == this._promptBox)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
let symbol = keyEvent.keyval;
|
||||||
|
let unichar = keyEvent.unicode_value;
|
||||||
|
|
||||||
|
let isLiftChar = GLib.unichar_isprint(unichar);
|
||||||
|
let isEnter = symbol == Clutter.KEY_Return ||
|
||||||
|
symbol == Clutter.KEY_KP_Enter ||
|
||||||
|
symbol == Clutter.KEY_ISO_Enter;
|
||||||
|
|
||||||
|
if (!isEnter && !isLiftChar)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
this._showPrompt();
|
||||||
|
|
||||||
|
if (GLib.unichar_isgraph(unichar))
|
||||||
|
this.addCharacter(unichar);
|
||||||
|
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}
|
||||||
|
|
||||||
_createBackground(monitorIndex) {
|
_createBackground(monitorIndex) {
|
||||||
let monitor = Main.layoutManager.monitors[monitorIndex];
|
let monitor = Main.layoutManager.monitors[monitorIndex];
|
||||||
let widget = new St.Widget({ style_class: 'screen-shield-background',
|
let widget = new St.Widget({ style_class: 'screen-shield-background',
|
||||||
@ -513,6 +543,48 @@ var UnlockDialog = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showClock() {
|
||||||
|
if (this._activePage == this._clock)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._activePage = this._clock;
|
||||||
|
this._clock.show();
|
||||||
|
|
||||||
|
this._promptBox.ease({
|
||||||
|
opacity: 0,
|
||||||
|
duration: 300,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => this._promptBox.hide(),
|
||||||
|
});
|
||||||
|
|
||||||
|
this._clock.ease({
|
||||||
|
opacity: 255,
|
||||||
|
duration: 300,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_showPrompt() {
|
||||||
|
if (this._activePage == this._promptBox)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._activePage = this._promptBox;
|
||||||
|
this._promptBox.show();
|
||||||
|
|
||||||
|
this._clock.ease({
|
||||||
|
opacity: 0,
|
||||||
|
duration: 300,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => this._clock.hide(),
|
||||||
|
});
|
||||||
|
|
||||||
|
this._promptBox.ease({
|
||||||
|
opacity: 255,
|
||||||
|
duration: 300,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_fail() {
|
_fail() {
|
||||||
this.emit('failed');
|
this.emit('failed');
|
||||||
}
|
}
|
||||||
@ -565,6 +637,7 @@ var UnlockDialog = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
addCharacter(unichar) {
|
addCharacter(unichar) {
|
||||||
|
this._showPrompt();
|
||||||
this._authPrompt.addCharacter(unichar);
|
this._authPrompt.addCharacter(unichar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user