X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/4e6bff06c0c36ef0e27846d6c628f503720c5b36..61dfc642406900ea1d4b2751925329cd69a36a87:/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 4136e18..924a880 100644 --- a/src/editor/modules/documentCanvas/canvas/keyboard.js +++ b/src/editor/modules/documentCanvas/canvas/keyboard.js @@ -238,26 +238,21 @@ var keyEventHandlers = [ ); }, run: function(e,s) { - var direction, caretTo, cursorAtOperationEdge, goto, element; + var goto, element; if(e.key === KEYS.BACKSPACE) { - direction = 'above'; - caretTo = 'end'; - cursorAtOperationEdge = s.isAtBeginning(); // always true? element = s.element; } else { - direction = 'below'; - caretTo = 'start'; - cursorAtOperationEdge = s.isAtEnd(); // always true? - element = cursorAtOperationEdge && s.canvas.getNearestTextElement(direction, s.element); + element = s.canvas.getNearestTextElement('below', s.element); } - if(!cursorAtOperationEdge || !element) { + e.preventDefault(); + + if(!element) { return; } - var parent = element.wlxmlNode.parent(); if(element.wlxmlNode.getIndex() === 0 && parent.isContextRoot() && (!parent.is('item') || parent.getIndex() === 0)) { // Don't even try to do anything at the edge of a context root, except for non-first items @@ -265,8 +260,6 @@ var keyEventHandlers = [ return; } - e.preventDefault(); - s.canvas.wlxmlDocument.transaction(function() { if(element.wlxmlNode.getIndex() === 0) { goto = element.wlxmlNode.parent().moveUp(); @@ -364,8 +357,10 @@ var keyEventHandlers = [ applies: function(e, s) { var parent = s.element && s.element.wlxmlNode.parent(), parentIsItem = parent && parent.is('item'), - itemIsOnList = parent && parent.parent() && parent.parent().is('list'); - return s.type === 'caret' && e.key === KEYS.ENTER && s.element.isEmpty() && parentIsItem && itemIsOnList; + itemIsOnList = parent && parent.parent() && parent.parent().is('list'), + onlyChild = parent.contents().length === 1; + return s.type === 'caret' && e.key === KEYS.ENTER && s.element.isEmpty() && onlyChild && + parentIsItem && itemIsOnList; }, run: function(e, s) { var item = s.element.wlxmlNode.parent(),