diff --git a/core/modules/widgets/setstyle.js b/core/modules/widgets/setstyle.js index 11cd8b663..0abfec60f 100644 --- a/core/modules/widgets/setstyle.js +++ b/core/modules/widgets/setstyle.js @@ -35,6 +35,24 @@ SetStyleWidget.prototype.generate = function() { this.children = this.renderer.renderTree.createRenderers(this.renderer,this.renderer.parseTreeNode.children); }; +SetStyleWidget.prototype.refreshInDom = function(changedAttributes,changedTiddlers) { + // Check if any of our attributes have changed, or if a tiddler we're interested in has changed + if(changedAttributes.name || changedAttributes.value || changedAttributes["class"]) { + // Regenerate and rerender the widget and replace the existing DOM node + this.generate(); + var oldDomNode = this.renderer.domNode, + newDomNode = this.renderer.renderInDom(); + oldDomNode.parentNode.replaceChild(newDomNode,oldDomNode); + } else { + // We don't need to refresh ourselves, so just refresh any child nodes + $tw.utils.each(this.children,function(node) { + if(node.refreshInDom) { + node.refreshInDom(changedTiddlers); + } + }); + } +}; + exports.setstyle = SetStyleWidget; })();