[gnome-builder/gnome-builder-3-26] rustup: avoid modifying preferences after unloading
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/gnome-builder-3-26] rustup: avoid modifying preferences after unloading
- Date: Mon, 15 Jan 2018 02:02:23 +0000 (UTC)
commit 33eeb5cace8fc4462d15b5f61a9cb1e9b82524bf
Author: Christian Hergert <chergert redhat com>
Date: Sun Jan 14 17:59:51 2018 -0800
rustup: avoid modifying preferences after unloading
This should probably be refactored before long to properly use cancellables
across the async function boundary. But for now, just track once we've
unloaded and avoid doing work in those conditions.
This fixes a gtk_widget_destroy() warning after unloading.
plugins/rustup/rustup_plugin/__init__.py | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
---
diff --git a/plugins/rustup/rustup_plugin/__init__.py b/plugins/rustup/rustup_plugin/__init__.py
index e51ff40ac..b994bbfd4 100644
--- a/plugins/rustup/rustup_plugin/__init__.py
+++ b/plugins/rustup/rustup_plugin/__init__.py
@@ -449,6 +449,8 @@ class RustupPreferencesAddin(GObject.Object, Ide.PreferencesAddin):
PreferencesAddin to display the installed rustup version and to change the rustup installation
"""
def do_load(self, preferences):
+ self.unloaded = False
+
preferences.add_list_group('sdk', 'rustup', _('Rustup'), Gtk.SelectionMode.NONE, 100)
preferences.add_group('sdk', 'rustup_toolchains_edit', _('Rustup Toolchains'), 100)
@@ -473,6 +475,7 @@ class RustupPreferencesAddin(GObject.Object, Ide.PreferencesAddin):
]
def do_unload(self, preferences):
+ self.unloaded = True
if self.ids:
for id in self.ids:
preferences.remove_id(id)
@@ -544,13 +547,14 @@ class RustupPreferencesAddin(GObject.Object, Ide.PreferencesAddin):
# reload toolchains
def has_rustup_callback(applicationAddin, preferenceAddin):
- toolchains = RustupApplicationAddin.instance.get_toolchains()
- self.toolchain_listbox.set_visible(len(toolchains) != 0)
- tcs = []
- for toolchain in toolchains:
- tcs.append(ModelItem(toolchain[0], toolchain[1]))
- old_len = self.store.get_n_items()
- self.store.splice(0, old_len, tcs)
+ if not self.unloaded:
+ toolchains = RustupApplicationAddin.instance.get_toolchains()
+ self.toolchain_listbox.set_visible(len(toolchains) != 0)
+ tcs = []
+ for toolchain in toolchains:
+ tcs.append(ModelItem(toolchain[0], toolchain[1]))
+ old_len = self.store.get_n_items()
+ self.store.splice(0, old_len, tcs)
RustupApplicationAddin.instance.connect('rustup_changed', has_rustup_callback, self)
has_rustup_callback(RustupApplicationAddin.instance, self)
return self.toolchain_listbox
@@ -589,9 +593,10 @@ class RustupPreferencesAddin(GObject.Object, Ide.PreferencesAddin):
# reload toolchains
def has_rustup_callback(applicationAddin):
- add_toolchain.set_sensitive(applicationAddin.has_rustup)
- toolchains = applicationAddin.get_toolchains()
- list_control.set_visible(applicationAddin.has_rustup and len(toolchains) != 0)
+ if not self.unloaded:
+ add_toolchain.set_sensitive(applicationAddin.has_rustup)
+ toolchains = applicationAddin.get_toolchains()
+ list_control.set_visible(applicationAddin.has_rustup and len(toolchains) != 0)
RustupApplicationAddin.instance.connect('rustup_changed', has_rustup_callback)
has_rustup_callback(RustupApplicationAddin.instance)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]