dialog: Reset initial focus on destroy
Since 0b02f757f8
we track the button that should have key focus
when the dialog is opened. However when the dialog is reused, the
button may get destroyed - clear the initial focus in that case to
allow setButton() to set a new one.
https://bugzilla.gnome.org/show_bug.cgi?id=788542
This commit is contained in:
parent
49c144a64c
commit
fd103ff703
@ -16,6 +16,7 @@ var Dialog = new Lang.Class({
|
|||||||
this.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._initialKeyFocus = null;
|
this._initialKeyFocus = null;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
this._pressedKey = null;
|
this._pressedKey = null;
|
||||||
this._buttonKeys = {};
|
this._buttonKeys = {};
|
||||||
this._createDialog();
|
this._createDialog();
|
||||||
@ -87,6 +88,18 @@ var Dialog = new Lang.Class({
|
|||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_setInitialKeyFocus: function(actor) {
|
||||||
|
if (this._initialKeyFocus)
|
||||||
|
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||||
|
|
||||||
|
this._initialKeyFocus = actor;
|
||||||
|
|
||||||
|
this._initialKeyFocusDestroyId = actor.connect('destroy', () => {
|
||||||
|
this._initialKeyFocus = null;
|
||||||
|
this._initialKeyFocusDestroyId = 0;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
get initialKeyFocus() {
|
get initialKeyFocus() {
|
||||||
return this._initialKeyFocus || this;
|
return this._initialKeyFocus || this;
|
||||||
},
|
},
|
||||||
@ -122,7 +135,7 @@ var Dialog = new Lang.Class({
|
|||||||
button.add_style_pseudo_class('default');
|
button.add_style_pseudo_class('default');
|
||||||
|
|
||||||
if (this._initialKeyFocus == null || isDefault)
|
if (this._initialKeyFocus == null || isDefault)
|
||||||
this._initialKeyFocus = button;
|
this._setInitialKeyFocus(button);
|
||||||
|
|
||||||
for (let i in keys)
|
for (let i in keys)
|
||||||
this._buttonKeys[keys[i]] = buttonInfo;
|
this._buttonKeys[keys[i]] = buttonInfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user