tkivy: i18n needs garbage collection - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 45a0c3b53b58dd54b1118e7379521bc6acc72052 DIR parent 49fb099bdc98fbf411631697002561c0a73662e5 HTML Author: ThomasV <thomasv@electrum.org> Date: Thu, 4 Feb 2016 20:02:45 +0100 kivy: i18n needs garbage collection Diffstat: M gui/kivy/i18n.py | 20 ++++++++++++++++++-- M gui/kivy/main.kv | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) --- DIR diff --git a/gui/kivy/i18n.py b/gui/kivy/i18n.py t@@ -18,8 +18,24 @@ class _(str): return _.lang(s).format(args, kwargs) @staticmethod - def bind(label): - _.observers.add(label) + def bind(label, arg): + if not isinstance(label.text, _): + return + if label.bound: + return + try: + _.observers.add(label) + except: + pass + label.bound = True + # garbage collection + new = set() + for label in _.observers: + try: + new.add(label) + except: + pass + _.observers = new @staticmethod def switch_lang(lang): DIR diff --git a/gui/kivy/main.kv b/gui/kivy/main.kv t@@ -13,7 +13,7 @@ font_name: 'Roboto' font_size: '16sp' bound: False - on_text: if isinstance(self.text, _) and not self.bound: self.bound = True; _.bind(self) + on_text: _.bind(self, args[1]) <TextInput> on_focus: app._focused_widget = root