1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-10-01 00:10:45 +00:00

A better fix for refreshing nested macros

This commit is contained in:
Jeremy Ruston 2012-06-19 16:56:55 +01:00
parent 2282a825ec
commit 9d39e9a5f1
2 changed files with 9 additions and 5 deletions

View File

@ -54,12 +54,12 @@ exports.executeMacro = function() {
if(value === undefined) { if(value === undefined) {
return $tw.Tree.Text(""); return $tw.Tree.Text("");
} else { } else {
var link = $tw.Tree.Element("span",{},[$tw.Tree.Macro("link",{ var link = $tw.Tree.Macro("link",{
srcParams: {to: value}, srcParams: {to: value},
content: [$tw.Tree.Text(value)], content: [$tw.Tree.Text(value)],
isBlock: this.isBlock, isBlock: this.isBlock,
wiki: this.wiki wiki: this.wiki
})]); });
link.execute(parents,this.tiddlerTitle); link.execute(parents,this.tiddlerTitle);
return link; return link;
} }

View File

@ -208,9 +208,13 @@ Macro.prototype.refreshInDom = function(changes) {
if(this.dependencies.hasChanged(changes,this.tiddlerTitle)) { if(this.dependencies.hasChanged(changes,this.tiddlerTitle)) {
// Re-execute the macro if so // Re-execute the macro if so
// Macros can only auto-refresh if their immediate child is a DOM node // Macros can only auto-refresh if their immediate child is a DOM node
var parentDomNode = this.child.domNode.parentNode, var child = this.child;
insertBefore = this.child.domNode.nextSibling; while(!child.domNode && child.child) {
parentDomNode.removeChild(this.child.domNode); child = child.child;
}
var parentDomNode = child.domNode.parentNode,
insertBefore = child.domNode.nextSibling;
parentDomNode.removeChild(child.domNode);
this.execute(this.parents,this.tiddlerTitle); this.execute(this.parents,this.tiddlerTitle);
this.renderInDom(parentDomNode,insertBefore); this.renderInDom(parentDomNode,insertBefore);
} else { } else {