fnp
/
fnpeditor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
smartxml/wlxml: Merge in document node instances caching
[fnpeditor.git]
/
src
/
editor
/
modules
/
documentCanvas
/
canvas
/
canvas.js
diff --git
a/src/editor/modules/documentCanvas/canvas/canvas.js
b/src/editor/modules/documentCanvas/canvas/canvas.js
index
ab31ee1
..
29edbe5
100644
(file)
--- a/
src/editor/modules/documentCanvas/canvas/canvas.js
+++ b/
src/editor/modules/documentCanvas/canvas/canvas.js
@@
-60,7
+60,8
@@
$.extend(TextHandler.prototype, {
});
});
-var Canvas = function(wlxmlDocument, elements) {
+var Canvas = function(wlxmlDocument, elements, metadata) {
+ this.metadata = metadata || {};
this.elementsRegister = new ElementsRegister(documentElement.DocumentNodeElement, nullElement);
elements = [
this.elementsRegister = new ElementsRegister(documentElement.DocumentNodeElement, nullElement);
elements = [
@@
-137,8
+138,10
@@
$.extend(Canvas.prototype, Backbone.Events, {
},
reloadRoot: function() {
},
reloadRoot: function() {
+ if(this.rootElement) {
+ this.rootElement.detach();
+ }
this.rootElement = this.createElement(this.wlxmlDocument.root);
this.rootElement = this.createElement(this.wlxmlDocument.root);
- this.rootWrapper.empty();
this.rootWrapper.append(this.rootElement.dom);
},
this.rootWrapper.append(this.rootElement.dom);
},
@@
-197,7
+200,7
@@
$.extend(Canvas.prototype, Backbone.Events, {
/* globals MutationObserver */
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
/* globals MutationObserver */
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
- if(documentElement.DocumentTextElement.isContentContainer(mutation.target)) {
+ if(
canvas.dom[0].contains(mutation.target) &&
documentElement.DocumentTextElement.isContentContainer(mutation.target)) {
observer.disconnect();
if(mutation.target.data === '') {
mutation.target.data = utils.unicode.ZWS;
observer.disconnect();
if(mutation.target.data === '') {
mutation.target.data = utils.unicode.ZWS;
@@
-346,7
+349,7
@@
$.extend(Canvas.prototype, Backbone.Events, {
if(byBrowser && byBrowser.parent().sameNode(nodeToLand)) {
return byBrowser;
}
if(byBrowser && byBrowser.parent().sameNode(nodeToLand)) {
return byBrowser;
}
- return
e.getVerticallyFirstTextElement()
;
+ return
_.isFunction(e.getVerticallyFirstTextElement) ? e.getVerticallyFirstTextElement({considerChildren: false}) : null
;
}.bind(this);
var _markAsCurrent = function(element) {
if(element instanceof documentElement.DocumentTextElement) {
}.bind(this);
var _markAsCurrent = function(element) {
if(element instanceof documentElement.DocumentTextElement) {
@@
-415,14
+418,6
@@
$.extend(Canvas.prototype, Backbone.Events, {
if(position.element) {
this._moveCaretToTextElement(position.element, position.offset);
}
if(position.element) {
this._moveCaretToTextElement(position.element, position.offset);
}
- },
-
- toggleGrid: function() {
- this.rootWrapper.toggleClass('grid-on');
- this.trigger('changed');
- },
- isGridToggled: function() {
- return this.rootWrapper.hasClass('grid-on');
}
});
}
});
@@
-462,6
+457,9
@@
$.extend(Selection.prototype, {
return doc.createFragment(doc.CaretFragment, {node: anchorNode, offset: this.nativeSelection.anchorOffset});
}
if(this.type === 'textSelection') {
return doc.createFragment(doc.CaretFragment, {node: anchorNode, offset: this.nativeSelection.anchorOffset});
}
if(this.type === 'textSelection') {
+ if(!anchorNode || !focusNode) {
+ return;
+ }
if(anchorNode.isSiblingOf(focusNode)) {
return doc.createFragment(doc.TextRangeFragment, {
node1: anchorNode,
if(anchorNode.isSiblingOf(focusNode)) {
return doc.createFragment(doc.TextRangeFragment, {
node1: anchorNode,
@@
-614,8
+612,8
@@
$.extend(Cursor.prototype, {
});
return {
});
return {
- fromXMLDocument: function(wlxmlDocument, elements) {
- return new Canvas(wlxmlDocument, elements);
+ fromXMLDocument: function(wlxmlDocument, elements
, metadata
) {
+ return new Canvas(wlxmlDocument, elements
, metadata
);
}
};
}
};