X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/9a99193e9c35b8688e2c9281edfd8b972107ff43..90a5dc9b9157cd3c02e9505661b7a22b953fae2e:/src/editor/modules/documentCanvas/canvas/keyboard.js diff --git a/src/editor/modules/documentCanvas/canvas/keyboard.js b/src/editor/modules/documentCanvas/canvas/keyboard.js index bd66c6e..18b6cfd 100644 --- a/src/editor/modules/documentCanvas/canvas/keyboard.js +++ b/src/editor/modules/documentCanvas/canvas/keyboard.js @@ -389,6 +389,24 @@ var handleKeyEvent = function(e, s) { }; // todo: whileRemoveWholetext var keyEventHandlers = [ + { + applies: function(e, s) { + return s.type === 'caret' && + s.element.wlxmlNode.parent().is({tagName: 'span'}) && + s.element.wlxmlNode.getText().length === 1 && + s.offset === 1 && + (e.key === KEYS.BACKSPACE); + }, + run: function(e, s) { + var params = {}, + prevTextNode = s.element.canvas.getPreviousTextElement(s.element).wlxmlNode; + e.preventDefault(); + s.element.wlxmlNode.parent().detach(params); + s.canvas.setCurrentElement( + (params.ret && params.ret.mergedTo) || prevTextNode, + {caretTo: params.ret ? params.ret.previousLen : (prevTextNode ? prevTextNode.getText().length : 0)}); + } + }, { applies: function(e, s) { return s.type === 'caret' && ( @@ -421,9 +439,11 @@ var keyEventHandlers = [ s.canvas.wlxmlDocument.transaction(function() { if(element.wlxmlNode.getIndex() === 0) { goto = element.wlxmlNode.parent().moveUp(); - if(goto) { - s.canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); - } + } else { + goto = element.wlxmlNode.moveUp(); + } + if(goto) { + s.canvas.setCurrentElement(goto.node, {caretTo: goto.offset}); } }, { metadata: {