smartxml: transactions fix - ignore empty transactions
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / keyboard.js
index d2a8e44..603249e 100644 (file)
@@ -104,7 +104,7 @@ handlers.push({key: KEYS.ENTER,
                 var result = position.element.data('wlxmlNode').breakContent({offset: position.offset}),
                     goto, gotoOptions;
                 if(result.emptyText) {
                 var result = position.element.data('wlxmlNode').breakContent({offset: position.offset}),
                     goto, gotoOptions;
                 if(result.emptyText) {
-                    goto = result.createdEmpty;
+                    goto = result.emptyText;
                     gotoOptions = {};
                 } else {
                     goto = result.second;
                     gotoOptions = {};
                 } else {
                     goto = result.second;
@@ -139,18 +139,24 @@ handlers.push({keys: [KEYS.ARROW_UP, KEYS.ARROW_DOWN, KEYS.ARROW_LEFT, KEYS.ARRO
             caretTo = false;
         if(!element) {
             // Chrome hack
             caretTo = false;
         if(!element) {
             // Chrome hack
-            var direction;
-            if(event.which === KEYS.ARROW_LEFT  || event.which === KEYS.ARROW_UP) {
-                direction = 'above';
-                caretTo = 'end';
-            } else {
-                direction = 'below';
-                caretTo = 'start';
+
+            var moves = [{direction: 'above', caretTo: 'end'}, {direction: 'below', caretTo: 'start'}];
+            if(event.which === KEYS.ARROW_RIGHT  || event.which === KEYS.ARROW_DOWN) {
+                moves.reverse();
             }
             }
-            /* globals window */
-            element = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]:visible', direction, window.getSelection().focusNode));
+            moves.some(function(move) {
+                /* globals window */
+                var targetNode = utils.nearestInDocumentOrder('[document-text-element]:visible', move.direction, window.getSelection().focusNode);
+                if(targetNode) {
+                    element = canvas.getDocumentElement(targetNode);
+                    caretTo = move.caretTo;
+                    return true; // break
+                }
+            });
+        }
+        if(element) {
+            canvas.setCurrentElement(element, {caretTo: caretTo});
         }
         }
-        canvas.setCurrentElement(element, {caretTo: caretTo});
     }
 });
 
     }
 });