From 07a563b625fb655dd9bc648e26c258d6b3a1b6a3 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Mon, 15 Jul 2024 17:26:14 +0100 Subject: [PATCH] Don't clone the 'preferences' trait --- envisage/ui/tasks/preferences_pane.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/envisage/ui/tasks/preferences_pane.py b/envisage/ui/tasks/preferences_pane.py index f39d78b8..4f092b94 100644 --- a/envisage/ui/tasks/preferences_pane.py +++ b/envisage/ui/tasks/preferences_pane.py @@ -64,7 +64,14 @@ def trait_context(self): else: raise ValueError("A preferences pane must have a model!") - self._model = self.model.clone_traits() + # Make sure that we don't clone the preferences trait, since that + # can lead to the preferences node being updated prematurely. + # xref: enthought/envisage#582 + traits_to_clone = [ + trait_name for trait_name in self.model.copyable_trait_names() + if trait_name != "preferences" + ] + self._model = self.model.clone_traits(traits_to_clone) self._model.preferences = None return {"object": self._model, "controller": self, "handler": self}