gnome-shell/0001-status-keyboard-Reset-menuItems-and-Label-objects-on.patch
2018-01-22 11:10:19 +01:00

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