screenShield: Don't wait until the dialog is loaded before opening it
If we wait asynchronously, key presses while the shield is opening will be dropped in the void. https://bugzilla.gnome.org/show_bug.cgi?id=686740
This commit is contained in:
parent
67615a0cbc
commit
127f10e7a8
@ -1014,7 +1014,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
function() {
|
function() {
|
||||||
// If we're just starting out, start on the right
|
// If we're just starting out, start on the right
|
||||||
// item.
|
// item.
|
||||||
if (!this.is_loaded) {
|
if (!this._userManager.is_loaded) {
|
||||||
this._userList.jumpToItem(this._timedLoginItem);
|
this._userList.jumpToItem(this._timedLoginItem);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1152,15 +1152,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
Lang.bind(this, function(userManager, user) {
|
Lang.bind(this, function(userManager, user) {
|
||||||
this._userList.removeUser(user);
|
this._userList.removeUser(user);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// emitted in idle so caller doesn't have to explicitly check if
|
|
||||||
// it's loaded immediately after construction
|
|
||||||
// (since there's no way the caller could be listening for
|
|
||||||
// 'loaded' yet)
|
|
||||||
Mainloop.idle_add(Lang.bind(this, function() {
|
|
||||||
this.emit('loaded');
|
|
||||||
this.is_loaded = true;
|
|
||||||
}));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onOpened: function() {
|
_onOpened: function() {
|
||||||
|
@ -892,14 +892,12 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
|
|
||||||
let time = global.get_current_time();
|
let time = global.get_current_time();
|
||||||
this._dialog.connect('loaded', Lang.bind(this, function() {
|
if (!this._dialog.open(time, onPrimary)) {
|
||||||
if (!this._dialog.open(time, onPrimary)) {
|
// This is kind of an impossible error: we're already modal
|
||||||
// This is kind of an impossible error: we're already modal
|
// by the time we reach this...
|
||||||
// by the time we reach this...
|
log('Could not open login dialog: failed to acquire grab');
|
||||||
log('Could not open login dialog: failed to acquire grab');
|
this.deactivate(true);
|
||||||
this.deactivate(true);
|
}
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._dialog.connect('failed', Lang.bind(this, this._onUnlockFailed));
|
this._dialog.connect('failed', Lang.bind(this, this._onUnlockFailed));
|
||||||
this._dialog.connect('unlocked', Lang.bind(this, this._onUnlockSucceded));
|
this._dialog.connect('unlocked', Lang.bind(this, this._onUnlockSucceded));
|
||||||
|
@ -141,11 +141,6 @@ const UnlockDialog = new Lang.Class({
|
|||||||
let batch = new Batch.Hold();
|
let batch = new Batch.Hold();
|
||||||
this._userVerifier.begin(this._userName, batch);
|
this._userVerifier.begin(this._userName, batch);
|
||||||
|
|
||||||
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
|
||||||
this.emit('loaded');
|
|
||||||
return false;
|
|
||||||
}));
|
|
||||||
|
|
||||||
Main.ctrlAltTabManager.addGroup(this.dialogLayout, _("Unlock Window"), 'dialog-password-symbolic');
|
Main.ctrlAltTabManager.addGroup(this.dialogLayout, _("Unlock Window"), 'dialog-password-symbolic');
|
||||||
|
|
||||||
this._idleMonitor = new GnomeDesktop.IdleMonitor();
|
this._idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||||
|
Loading…
Reference in New Issue
Block a user