X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/8411d228c0928c0a2d6c280a2f39adacc972ee13..9255c2fe5083c35b4f6e5c098813842025f4772d:/src/editor/modules/documentCanvas/canvas/canvas.js?ds=sidebyside diff --git a/src/editor/modules/documentCanvas/canvas/canvas.js b/src/editor/modules/documentCanvas/canvas/canvas.js index ebede40..d7d94a7 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.js @@ -162,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() { @@ -174,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); } }, @@ -267,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'); } @@ -547,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),