status/keyboard: Reset menuItems and Label objects on change
In the current code it could happen that we've menuItems and indicatorLabels for sources that aren't anymore around, because in case a source is removed we don't cleanup the their container objects. Also, we should nullify InputManager's _currentSource when sources change or it might point to some invalid data again. So it could happen that we try to access an invalid menuitem or label if a source change happens mentioning a source that has been deleted. https://bugzilla.gnome.org/show_bug.cgi?id=788931
This commit is contained in:
parent
9dc977e324
commit
a46af9edf0
@ -529,6 +529,7 @@ var InputSourceManager = new Lang.Class({
|
|||||||
let sources = this._settings.inputSources;
|
let sources = this._settings.inputSources;
|
||||||
let nSources = sources.length;
|
let nSources = sources.length;
|
||||||
|
|
||||||
|
this._currentSource = null;
|
||||||
this._inputSources = {};
|
this._inputSources = {};
|
||||||
this._ibusSources = {};
|
this._ibusSources = {};
|
||||||
|
|
||||||
@ -827,6 +828,9 @@ var InputSourceIndicator = new Lang.Class({
|
|||||||
for (let i in this._indicatorLabels)
|
for (let i in this._indicatorLabels)
|
||||||
this._indicatorLabels[i].destroy();
|
this._indicatorLabels[i].destroy();
|
||||||
|
|
||||||
|
this._menuItems = {};
|
||||||
|
this._indicatorLabels = {};
|
||||||
|
|
||||||
let menuIndex = 0;
|
let menuIndex = 0;
|
||||||
for (let i in this._inputSourceManager.inputSources) {
|
for (let i in this._inputSourceManager.inputSources) {
|
||||||
let is = this._inputSourceManager.inputSources[i];
|
let is = this._inputSourceManager.inputSources[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user