Index: trellis.py =================================================================== --- trellis.py (revision 2599) +++ trellis.py (working copy) @@ -207,9 +219,17 @@ if self.next_subject is None and ( self._reset is _sentinel or self._value==self._reset ): + link = self.next_listener + while link is not None: + nxt = link.next_listener + listener = link() + if isinstance(listener, ReadOnlyCell) and listener.next_subject is None: + listener._check_const() + on_undo(stm.Link, self, listener) + link.unlink() + link = nxt change_attr(self, '_set_by', _sentinel) change_attr(self, 'rule', None) - change_attr(self, 'next_listener', None) change_attr(self, '__class__', self._const_class()) def _const_class(self):