fix: canvas again gets opportunity to react to footnote being closed
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / keyboard.js
index fc8be1e..f0439d6 100644 (file)
@@ -226,7 +226,7 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE],
 
             if(direction === 'above') {
                 if(start.offsetAtBeginning) {
 
             if(direction === 'above') {
                 if(start.offsetAtBeginning) {
-                    goto = start.element.getNearestTextElement('above');
+                    goto = canvas.getNearestTextElement('above', start.element);
                     caretTo = 'end';
                 } else {
                     goto = start.element;
                     caretTo = 'end';
                 } else {
                     goto = start.element;
@@ -234,7 +234,7 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE],
                 }
             } else {
                 if(end.offsetAtEnd) {
                 }
             } else {
                 if(end.offsetAtEnd) {
-                    goto = start.element.getNearestTextElement('below');
+                    goto = canvas.getNearestTextElement('below', start.element);
                     caretTo = 'start';
                 } else {
                     goto = end.element;
                     caretTo = 'start';
                 } else {
                     goto = end.element;
@@ -283,22 +283,24 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE],
                     if(grandParent && grandParent.children().length === 1) {
                         goto = grandParent.wlxmlNode.append({text: ''});
                     } else {
                     if(grandParent && grandParent.children().length === 1) {
                         goto = grandParent.wlxmlNode.append({text: ''});
                     } else {
-                        goto = element.getNearestTextElement(direction);
+                        goto = canvas.getNearestTextElement(direction, element);
                     }
                     parent.wlxmlNode.detach();
                 } else {
                     }
                     parent.wlxmlNode.detach();
                 } else {
-                    goto = element.getNearestTextElement(direction);
+                    goto = canvas.getNearestTextElement(direction, element);
                     element.wlxmlNode.detach();
                 }
                 canvas.setCurrentElement(goto, {caretTo: caretTo});
             }
             else if(cursorAtOperationEdge) {
                 if(direction === 'below') {
                     element.wlxmlNode.detach();
                 }
                 canvas.setCurrentElement(goto, {caretTo: caretTo});
             }
             else if(cursorAtOperationEdge) {
                 if(direction === 'below') {
-                    element = element.getNearestTextElement(direction);
+                    element = canvas.getNearestTextElement(direction, element);
                 }
                 if(element) {
                     goto = element.wlxmlNode.mergeContentUp();
                 }
                 if(element) {
                     goto = element.wlxmlNode.mergeContentUp();
-                    canvas.setCurrentElement(goto.node, {caretTo: goto.offset});
+                    if(goto) {
+                        canvas.setCurrentElement(goto.node, {caretTo: goto.offset});
+                    }
                 }
                 event.preventDefault();
             }
                 }
                 event.preventDefault();
             }