);
},
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
return;
}
- e.preventDefault();
-
s.canvas.wlxmlDocument.transaction(function() {
if(element.wlxmlNode.getIndex() === 0) {
goto = element.wlxmlNode.parent().moveUp();
}, {
success: function() {
if(goto) {
+ if(!doc.containsNode(goto.wlxmlNode)) {
+ goto = s.startElement;
+ caretTo = s.startOffset;
+ }
s.canvas.setCurrentElement(goto, {caretTo: caretTo});
}
}