From 80cbe2a98f5a96d0509113b2678c61ecc1f92d09 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 15 Oct 2012 18:46:04 +0100 Subject: [PATCH] Refactor out the reexecuteInDom() method of macros --- core/modules/treenodes/macro.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/core/modules/treenodes/macro.js b/core/modules/treenodes/macro.js index 6e5a033f3..c86cf61a1 100644 --- a/core/modules/treenodes/macro.js +++ b/core/modules/treenodes/macro.js @@ -207,16 +207,7 @@ Macro.prototype.refreshInDom = function(changes) { // Check if any of the dependencies of this macro node have changed if(this.dependencies.hasChanged(changes,this.tiddlerTitle)) { // Re-execute the macro if so - // Macros can only auto-refresh if on of their descendent child has a DOM node - var child = this.child; - while(!child.domNode && child.child) { - child = child.child; - } - var parentDomNode = child.domNode.parentNode, - insertBefore = child.domNode.nextSibling; - parentDomNode.removeChild(child.domNode); - this.execute(this.parents,this.tiddlerTitle); - this.renderInDom(parentDomNode,insertBefore); + this.reexecuteInDom(); } else { // Refresh any child if(this.child) { @@ -225,6 +216,22 @@ Macro.prototype.refreshInDom = function(changes) { } }; +/* +Re-execute a macro in the DOM +*/ +Macro.prototype.reexecuteInDom = function() { + // Macros can only auto-refresh if one of their descendent child has a DOM node + var child = this.child; + while(!child.domNode && child.child) { + child = child.child; + } + var parentDomNode = child.domNode.parentNode, + insertBefore = child.domNode.nextSibling; + parentDomNode.removeChild(child.domNode); + this.execute(this.parents,this.tiddlerTitle); + this.renderInDom(parentDomNode,insertBefore); +}; + Macro.prototype.addClass = function(className) { this.classes = this.classes || []; $tw.utils.pushTop(this.classes,className.split(" "));