summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2018-03-02 23:44:44 +0100
committerJonas Ådahl <jadahl@gmail.com>2018-05-31 11:42:14 +0000
commitb1dd746443a949aaa4a700fec3b2acfa7fb90e36 (patch)
treec2aed99028c076cdd07705d7ef33a7e48d3078ce
parentc15e163eb1e6df8738121e8ca48bcfe38d920ac4 (diff)
downloadgnome-shell-wip/fmuellner/unbreak-wifi-keynav.tar.gz
network: Keep key focus in dialog when removing networkswip/fmuellner/unbreak-wifi-keynav
When the actor that has the key focus is destroyed, Clutter moves the focus to the stage. In case the destroyed actor was inside a ModalDialog, this breaks any keyboard interaction: keynav is broken because the stage isn't in any focus chain, and access keys like Escape because they are handled on the dialog's parent. The only dialog that may destroy a child without recreating the dialog buttons (and thus moving the key focus there) is the WirelessDialog, fix it by keeping the key focus within the dialog when removing networks from the list. https://gitlab.gnome.org/GNOME/gnome-shell/issues/76
-rw-r--r--js/ui/status/network.js5
1 files changed, 5 insertions, 0 deletions
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index a71297eed..bf3a2bac6 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -1164,6 +1164,11 @@ var NMWirelessDialog = new Lang.Class({
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
this._selectNetwork(network);
});
+ network.item.actor.connect('destroy', () => {
+ let keyFocus = global.stage.key_focus;
+ if (keyFocus && keyFocus.contains(network.item.actor))
+ this._itemBox.grab_key_focus();
+ });
},
});