network: Keep key focus in dialog when removing networks
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
This commit is contained in:
parent
c15e163eb1
commit
b1dd746443
@ -1164,6 +1164,11 @@ var NMWirelessDialog = new Lang.Class({
|
|||||||
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
|
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
|
||||||
this._selectNetwork(network);
|
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();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user