From bad8dbc2d29204d4a02de4f1aaaf076a987ea7e5 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 15 Mar 2011 16:05:40 -0400 Subject: [PATCH] modalDialog: grab focus immediately, not after fade-in If the user types Alt+F2 and then immediately starts typing, some keys can get lost. Fix that by grabbing focus sooner. https://bugzilla.gnome.org/show_bug.cgi?id=644857 --- js/ui/modalDialog.js | 10 ++++++---- js/ui/runDialog.js | 5 +---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js index 45a1e3c38..56bc1a203 100644 --- a/js/ui/modalDialog.js +++ b/js/ui/modalDialog.js @@ -148,19 +148,23 @@ ModalDialog.prototype = { this._lightbox.show(); this._group.opacity = 0; this._group.show(); + this._initialKeyFocus.grab_key_focus(); Tweener.addTween(this._group, { opacity: 255, time: OPEN_AND_CLOSE_TIME, transition: 'easeOutQuad', onComplete: Lang.bind(this, function() { - this._initialKeyFocus.grab_key_focus(); this.state = State.OPENED; this.emit('opened'); - }), + }) }); }, + setInitialKeyFocus: function(actor) { + this._initialKeyFocus = actor; + }, + open: function(timestamp) { if (this.state == State.OPENED || this.state == State.OPENING) return true; @@ -168,8 +172,6 @@ ModalDialog.prototype = { if (!Main.pushModal(this._group, timestamp)) return false; - global.stage.set_key_focus(this._group); - this._fadeOpen(); return true; }, diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index 2a02a3b02..427979722 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -210,10 +210,7 @@ __proto__: ModalDialog.ModalDialog.prototype, this._entryText = entry.clutter_text; this.contentLayout.add(entry, { y_align: St.Align.START }); - this.connect('opened', - Lang.bind(this, function() { - this._entryText.grab_key_focus(); - })); + this.setInitialKeyFocus(this._entryText); this._errorBox = new St.BoxLayout({ style_class: 'run-dialog-error-box' });