smartxml: Automatically rollback transaction on error thrown
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / keyboard.js
index 6b55909..85fbd43 100644 (file)
@@ -131,7 +131,9 @@ handlers.push({keys: [KEYS.ARROW_UP, KEYS.ARROW_DOWN, KEYS.ARROW_LEFT, KEYS.ARRO
                 caretTo = 'start';
             }
             var el = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]', direction, element.dom()[0]));
-            canvas.setCurrentElement(el, {caretTo: caretTo});
+            if(el) {
+                canvas.setCurrentElement(el, {caretTo: caretTo});
+            }
         }
     },
     keyup: function(event, canvas) {
@@ -249,6 +251,9 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE],
                 event.preventDefault();
                 var parent = element.parent(),
                     grandParent = parent ? parent.parent() : null;
+                if(!grandParent && parent.children().length === 1) {
+                    return;
+                }
                 if(parent.children().length === 1 && parent.children()[0].sameNode(element)) {
                     if(grandParent && grandParent.children().length === 1) {
                         goto = grandParent.data('wlxmlNode').append({text: ''});
@@ -261,7 +266,6 @@ handlers.push({keys: [KEYS.BACKSPACE, KEYS.DELETE],
                     element.data('wlxmlNode').detach();
                 }
                 canvas.setCurrentElement(goto, {caretTo: caretTo});
-                canvas.publisher('contentChanged');
             }
             else if(cursorAtOperationEdge) {
                 if(direction === 'below') {