[gnome-shell] system: Keep key focus when switching between alternatives



commit 011fef4b2b35cbe85e67d157a54ac24022dd3d25
Author: Florian Müllner <fmuellner gnome org>
Date:   Sat Apr 26 21:48:46 2014 +0200

    system: Keep key focus when switching between alternatives
    
    When switching between alternatives in AltSwitcher, the currently
    visible child is replaced with the alternative. If the original
    child has the key focus when it is removed from the stage, the
    focus is lost. Detect this case and manually move the focus to
    the new child.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=727259

 js/ui/status/system.js |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/status/system.js b/js/ui/status/system.js
index 83eb92c..b36c9d1 100644
--- a/js/ui/status/system.js
+++ b/js/ui/status/system.js
@@ -56,7 +56,10 @@ const AltSwitcher = new Lang.Class({
         }
 
         if (this.actor.get_child() != childToShow) {
+            let hasFocus = this.actor.contains(global.stage.get_key_focus());
             this.actor.set_child(childToShow);
+            if (hasFocus)
+                childToShow.grab_key_focus();
 
             // The actors might respond to hover, so
             // sync the pointer to make sure they update.


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