});
this.document = document;
- this.hasRun = false;
+ this.runCount = 0;
if(desc.init) {
desc.init.call(this);
}
}
var argsToPass = desc.undo ? [this].concat(this.args) : this.args;
var toret = desc.impl.apply(this.context, argsToPass);
- this.hasRun = true;
+ this.runCount++;
return toret;
},
undo: function() {
if(desc.undo) {
desc.undo.call(this.context, this);
+ this.runCount++;
} else {
this.document.getNodeByPath(this.changeRootPath).replaceWith(this.snapshot);
}
},
wrapNodeProperty: function(object, propName, value) {
var transformation = this,
+ lastRunNumber = 0,
path;
value = value || object[propName];
path = value.getPath();
Object.defineProperty(object, propName, {
get: function() {
- if(transformation.hasRun && path) {
- return transformation.document.getNodeByPath(path);
- } else {
- return value;
+ if((lastRunNumber !== transformation.runCount) && path) {
+ value = transformation.document.getNodeByPath(path);
+ lastRunNumber = transformation.runCount;
}
+ return value;
}
});
}