File gnome-shell-prompt-twice.patch of Package gnome-shell.1083
diff -Npur gnome-shell-3.10.4/js/gdm/loginDialog.js gnome-shell-3.10.4-new/js/gdm/loginDialog.js
--- gnome-shell-3.10.4/js/gdm/loginDialog.js 2014-04-30 08:30:11.883063332 +0800
+++ gnome-shell-3.10.4-new/js/gdm/loginDialog.js 2014-04-30 08:45:39.231044301 +0800
@@ -518,6 +518,11 @@ const LoginDialog = new Lang.Class({
this._disableUserList = undefined;
this._userListLoaded = false;
+ this._nextSignalId = 0;
+
+ this._realmManager = new Realmd.Manager();
+ this._realmSignalId = this._realmManager.connect('login-format-changed',
+ Lang.bind(this, this._showRealmLoginHint));
// If the user list is enabled, it should take key focus; make sure the
// screen shield is initialized first to prevent it from stealing the
@@ -663,14 +668,14 @@ const LoginDialog = new Lang.Class({
//FIXME: if we realmManager did not work, use ower own one
this._authPrompt.setMessage(_("(e.g., domain\\user)"), GdmUtil.MessageType.HINT);
- let realmManager = new Realmd.Manager();
- let realmSignalId = realmManager.connect('login-format-changed',
- Lang.bind(this, this._showRealmLoginHint));
- this._showRealmLoginHint(realmManager.loginFormat);
+ this._showRealmLoginHint(this._realmManager.loginFormat);
- let nextSignalId = this._authPrompt.connect('next',
+ if (this._nextSignalId)
+ this._authPrompt.disconnect(this._nextSignalId);
+ this._nextSignalId = this._authPrompt.connect('next',
Lang.bind(this, function() {
- this._authPrompt.disconnect(nextSignalId);
+ this._authPrompt.disconnect(this._nextSignalId);
+ this._nextSignalId = 0;
this._authPrompt.updateSensitivity(false);
let answer = this._authPrompt.getAnswer();
this._user = this._userManager.get_user(answer);
@@ -678,9 +683,6 @@ const LoginDialog = new Lang.Class({
this._authPrompt.startSpinning();
this._authPrompt.begin({ userName: answer });
this._updateCancelButton();
-
- realmManager.disconnect(realmSignalId)
- realmManager.release();
}));
this._updateCancelButton();
this._showPrompt();
@@ -693,25 +695,22 @@ const LoginDialog = new Lang.Class({
//FIXME: I sugguest to add this info for customer to contact their account manager
this._authPrompt.setMessage(this._domainMenuButton.getHintMessage(), GdmUtil.MessageType.HINT);
- let realmManager = new Realmd.Manager();
- let realmSignalId = realmManager.connect('login-format-changed',
- Lang.bind(this, this._showRealmLoginHint));
- this._showRealmLoginHint(realmManager.loginFormat);
+ this._showRealmLoginHint(this._realmManager.loginFormat);
- let nextSignalId = this._authPrompt.connect('next',
+ if (this._nextSignalId)
+ this._authPrompt.disconnect(this._nextSignalId);
+ this._nextSignalId = this._authPrompt.connect('next',
Lang.bind(this, function() {
- this._authPrompt.disconnect(nextSignalId);
+ this._authPrompt.disconnect(this._nextSignalId);
+ this._nextSignalId = 0;
this._authPrompt.updateSensitivity(false);
let answer = this._authPrompt.getAnswer();
- let domain_answer = this._domainMenuButton.getDomainUser(answer);
+ let domain_answer = this._domainMenuButton.getDomainUser(answer);
this._user = this._userManager.get_user(domain_answer);
this._authPrompt.clear();
this._authPrompt.startSpinning();
this._authPrompt.begin({ userName: domain_answer});
this._updateCancelButton();
-
- realmManager.disconnect(realmSignalId)
- realmManager.release();
}));
this._updateCancelButton();
this._showPrompt();
@@ -941,6 +940,11 @@ const LoginDialog = new Lang.Class({
this._userManager.disconnect(this._userManagerLoadedId);
this._userManagerLoadedId = 0;
}
+ if (this._realmManager) {
+ this._realmManager.disconnect(this._realmSignalId);
+ this._realmSignalId = 0;
+ this._realmManager.release();
+ }
},
_loadUserList: function() {