[gnome-shell] modalDialog: grab focus immediately, not after fade-in



commit bad8dbc2d29204d4a02de4f1aaaf076a987ea7e5
Author: Dan Winship <danw gnome org>
Date:   Tue Mar 15 16:05:40 2011 -0400

    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 45a1e3c..56bc1a2 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 2a02a3b..4279797 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' });
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]