X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/c833dec45110d8cb85cdf63813a17b1c27516552..ab1445aee3c066a08d0602dd8b2e6996646d986f:/src/editor/modules/documentCanvas/canvas/canvas.js?ds=inline diff --git a/src/editor/modules/documentCanvas/canvas/canvas.js b/src/editor/modules/documentCanvas/canvas/canvas.js index 3dac88f..d7d94a7 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.js @@ -97,6 +97,15 @@ var Canvas = function(wlxmlDocument, elements, metadata, sandbox) { $.extend(Canvas.prototype, Backbone.Events, { + createElementType: function(elementPrototype) { + /* TODO: reconcile this with ElementsRegister behavior */ + var Constructor = function() { + documentElement.DocumentNodeElement.apply(this, Array.prototype.slice.call(arguments, 0)); + }; + Constructor.prototype = elementPrototype; + return Constructor; + }, + getElementOffset: function(element) { return element.dom.offset().top - this.dom.offset().top; }, @@ -153,6 +162,11 @@ $.extend(Canvas.prototype, Backbone.Events, { //return DocumentTextElement.fromHTMLElement(htmlElement, canvas); return $element.data('canvas-element'); } + + /* experimental */ + if($element.parent().data('canvas-element')) { + return $element.parent().data('canvas-element'); + } }, reloadRoot: function() { @@ -165,7 +179,9 @@ $.extend(Canvas.prototype, Backbone.Events, { triggerKeyEvent: function(keyEvent, selection) { selection = selection || this.getSelection(); - if(selection && (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid()) { + if(selection && ( + (selection.type === 'caret' || selection.type === 'textSelection') && selection.toDocumentFragment().isValid() + || selection.type == 'nodeSelection')) { keyboard.handleKeyEvent(keyEvent, selection); } }, @@ -258,7 +274,10 @@ $.extend(Canvas.prototype, Backbone.Events, { if(mutation.target.data === '') { mutation.target.data = utils.unicode.ZWS; } - else if(mutation.oldValue === utils.unicode.ZWS) { + if(mutation.target.data === mutation.oldValue) { + return; // shouldn't happen, but better be safe + } + if(mutation.oldValue === utils.unicode.ZWS) { mutation.target.data = mutation.target.data.replace(utils.unicode.ZWS, ''); canvas._moveCaretToTextElement(canvas.getDocumentElement(mutation.target), 'end'); } @@ -538,18 +557,18 @@ $.extend(Cursor.prototype, { return this.getSelectionAnchor(); }, getSelectionStart: function() { - return this.getSelectionBoundry('start'); + return this.getSelectionBoundary('start'); }, getSelectionEnd: function() { - return this.getSelectionBoundry('end'); + return this.getSelectionBoundary('end'); }, getSelectionAnchor: function() { - return this.getSelectionBoundry('anchor'); + return this.getSelectionBoundary('anchor'); }, getSelectionFocus: function() { - return this.getSelectionBoundry('focus'); + return this.getSelectionBoundary('focus'); }, - getSelectionBoundry: function(which) { + getSelectionBoundary: function(which) { /* globals window */ var selection = window.getSelection(), anchorElement = this.canvas.getDocumentElement(selection.anchorNode),