45 lines
1.6 KiB
Diff
45 lines
1.6 KiB
Diff
From a46af9edf0b99b64501617a1159bc1beb9af218f Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
|
Date: Sat, 28 Oct 2017 02:23:02 -0500
|
|
Subject: [PATCH] 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
|
|
---
|
|
js/ui/status/keyboard.js | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
|
|
index 70e6abf87..b2f10322d 100644
|
|
--- a/js/ui/status/keyboard.js
|
|
+++ b/js/ui/status/keyboard.js
|
|
@@ -529,6 +529,7 @@ var InputSourceManager = new Lang.Class({
|
|
let sources = this._settings.inputSources;
|
|
let nSources = sources.length;
|
|
|
|
+ this._currentSource = null;
|
|
this._inputSources = {};
|
|
this._ibusSources = {};
|
|
|
|
@@ -827,6 +828,9 @@ var InputSourceIndicator = new Lang.Class({
|
|
for (let i in this._indicatorLabels)
|
|
this._indicatorLabels[i].destroy();
|
|
|
|
+ this._menuItems = {};
|
|
+ this._indicatorLabels = {};
|
|
+
|
|
let menuIndex = 0;
|
|
for (let i in this._inputSourceManager.inputSources) {
|
|
let is = this._inputSourceManager.inputSources[i];
|
|
--
|
|
2.14.3
|
|
|