modalDialog: Fix setting the initial key focus after the 1st time
Checking if _buttonLayout contains _initialKeyFocus always fails since we destroy all children before. Instead, use a signal handler id when explicitly setting the initial key focus which is zeroed if/when the actor is destroyed. https://bugzilla.gnome.org/show_bug.cgi?id=663437
This commit is contained in:
parent
a197ce6f53
commit
b58425d7d7
@ -98,6 +98,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
|
|
||||||
global.focus_manager.add_group(this._dialogLayout);
|
global.focus_manager.add_group(this._dialogLayout);
|
||||||
this._initialKeyFocus = this._dialogLayout;
|
this._initialKeyFocus = this._dialogLayout;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -134,8 +135,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
else
|
else
|
||||||
x_alignment = St.Align.MIDDLE;
|
x_alignment = St.Align.MIDDLE;
|
||||||
|
|
||||||
if (this._initialKeyFocus == this._dialogLayout ||
|
if (!this._initialKeyFocusDestroyId)
|
||||||
this._buttonLayout.contains(this._initialKeyFocus))
|
|
||||||
this._initialKeyFocus = buttonInfo.button;
|
this._initialKeyFocus = buttonInfo.button;
|
||||||
this._buttonLayout.add(buttonInfo.button,
|
this._buttonLayout.add(buttonInfo.button,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@ -205,7 +205,15 @@ const ModalDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setInitialKeyFocus: function(actor) {
|
setInitialKeyFocus: function(actor) {
|
||||||
|
if (this._initialKeyFocusDestroyId)
|
||||||
|
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||||
|
|
||||||
this._initialKeyFocus = actor;
|
this._initialKeyFocus = actor;
|
||||||
|
|
||||||
|
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
|
||||||
|
this._initialKeyFocus = this._dialogLayout;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function(timestamp) {
|
open: function(timestamp) {
|
||||||
|
Loading…
Reference in New Issue
Block a user