GenericElement doesn't need to dispatch nodeTextChange events
anymore as TextNodes now have their own reference to canvas
elements and wlxmlListener can dispatch to them directly.
We still need to handle changes to the comments though - this should
be refactored out to some kind of non-rendering canvas element.
this.dom = this.createDOM();
this.dom.data('canvas-element', this);
this.dom = this.createDOM();
this.dom.data('canvas-element', this);
+ this.wlxmlNode.setData('canvasElement', this);
};
$.extend(DocumentElement.prototype, {
};
$.extend(DocumentElement.prototype, {
// DocumentNodeElement represents an element node from WLXML document rendered inside Canvas
var DocumentNodeElement = function(wlxmlNode, canvas) {
DocumentElement.call(this, wlxmlNode, canvas);
// DocumentNodeElement represents an element node from WLXML document rendered inside Canvas
var DocumentNodeElement = function(wlxmlNode, canvas) {
DocumentElement.call(this, wlxmlNode, canvas);
- wlxmlNode.setData('canvasElement', this);
}
},
onNodeTextChange: function(event) {
}
},
onNodeTextChange: function(event) {
- var node = event.meta.node,
- toSet = node.getText(),
- handled;
-
- handled = this.children().some(function(child) {
- if(child.wlxmlNode.sameNode(node)) {
- if(toSet === '') {
- toSet = utils.unicode.ZWS;
- }
- if(toSet !== child.getText()) {
- child.setText(toSet);
- }
- return true;
- }
- });
+ var node = event.meta.node;
- if(!handled && node.parent() && node.parent().is('comment') && this.wlxmlNode.sameNode(node.parent().parent())) {
+ /* TODO: This handling of changes to the comments should probably be implemented via separate,
+ non-rendering comments element */
+ if(node.parent() && node.parent().is('comment') && this.wlxmlNode.sameNode(node.parent().parent())) {
this.commentsView.render();
}
},
this.commentsView.render();
}
},
-var getElementForElementRootNode = function(node, withParent) {
- if(node.nodeType === Node.TEXT_NODE) {
- return _getElementForRootTextNode(node, withParent);
- }
+var getElementForElementRootNode = function(node) {
return node.getData('canvasElement');
};
return node.getData('canvasElement');
};
-var _getElementForRootTextNode = function(textNode, withParent) {
- var parentElement = getElementForNode(withParent || textNode.parent()),
- toret;
- parentElement.children().some(function(child) {
- if(child.wlxmlNode.sameNode(textNode)) {
- toret = child;
- return true;
- }
- });
- return toret;
-};
-
-var getElementForNode = function(node, withParent) {
- if(node.nodeType === Node.TEXT_NODE) {
- return _getElementForTextNode(node, withParent);
- }
+var getElementForNode = function(node) {
while(!node.getData('canvasElement')) {
node = node.parent();
}
return node.getData('canvasElement');
};
while(!node.getData('canvasElement')) {
node = node.parent();
}
return node.getData('canvasElement');
};
-var _getElementForTextNode = function(textNode, withParent) {
- var parentElement = getElementForNode(withParent || textNode.parent()),
- toret;
- parentElement.children().some(function(child) {
- if(child.wlxmlNode.sameNode(textNode)) {
- toret = child;
- return true;
- }
- });
- return toret || parentElement;
-};
-
var getElementForDetachedNode = function(node, originalParent) {
var ptr = originalParent;
if(ptr === null) {
var getElementForDetachedNode = function(node, originalParent) {
var ptr = originalParent;
if(ptr === null) {