There are a number of different ways to do the "the UI of this node has changed so we need to perform the node, but its output will not have changed" operation:
node.uichange()
node.type.uichange(node)
self.changed(uiOnly=True)
This probably needs unifying. Also note the changed/uichange dichotomy.
Often it's better to do a canvas redisplay, which will do both a uichange and an updateTabs. To be honest, this functionality should be put into a uichanged() method of Tab, but just make sure you do it everywhere and get rid of all the other changes. So here's the suggestion:
replace all uichange calls with self.uichanged in the Tab - note the change in tense. If they happen outside the tab we'll do something else (perhaps call perform(uiOnly=True)).
remove all definitions of the various uichange() except for that of the XFormType.
write Tab.uichanged to call the XFormType's uichange and an updateTabs on the node.
OK, can't quite do that because we sometimes need to call uichange from inside the node itself (at least in one place, in XForm.perform immediately before the call to type perform. And that's something that might need looking at; avoiding that second call!) (It also happens in XForm.changed, so trace that down too!) (check also the call in canvas redisplay).
There are a number of different ways to do the "the UI of this node has changed so we need to perform the node, but its output will not have changed" operation:
This probably needs unifying. Also note the changed/uichange dichotomy.
Often it's better to do a canvas redisplay, which will do both a uichange and an updateTabs. To be honest, this functionality should be put into a uichanged() method of Tab, but just make sure you do it everywhere and get rid of all the other changes. So here's the suggestion:
OK, can't quite do that because we sometimes need to call uichange from inside the node itself (at least in one place, in XForm.perform immediately before the call to type perform. And that's something that might need looking at; avoiding that second call!) (It also happens in XForm.changed, so trace that down too!) (check also the call in canvas redisplay).