refactorization
[fnpeditor.git] / modules / documentCanvas / canvas / canvas.js
index 83fc504..6f4e089 100644 (file)
@@ -169,8 +169,23 @@ $.extend(Canvas.prototype, {
             }
 
             this.wrapper.on('keyup', function(e) {
             }
 
             this.wrapper.on('keyup', function(e) {
-                if(e.which >= 37 && e.which <= 40)
-                    canvas.setCurrentElement(canvas.getCursor().getPosition().element, {caretTo: false})
+                if(e.which >= 37 && e.which <= 40) {
+                    var element = canvas.getCursor().getPosition().element,
+                        caretTo = false;
+                    if(!element) {
+                        // Chrome hack
+                        var direction;
+                        if(e.which === (KEYS.ARROW_LEFT  || KEYS.ARROW_DOWN)) {
+                            direction = 'above';
+                            caretTo = 'end';
+                        } else {
+                            direction = 'below';
+                            caretTo = 'start';
+                        }
+                        element = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]', direction, window.getSelection().focusNode));
+                    }
+                    canvas.setCurrentElement(element, {caretTo: caretTo});
+                }
             });
          
             this.wrapper.on('keydown', function(e) {
             });
          
             this.wrapper.on('keydown', function(e) {
@@ -306,19 +321,9 @@ $.extend(Canvas.prototype, {
 
     list: {},
 
 
     list: {},
 
-
-
-    highlightElement: function(element) {
-        this.wrapper.find('.highlighted-element').removeClass('highlighted-element');
-        element.dom().addClass('highlighted-element');
-    },
-
-    dimElement: function(element) {
-        element.dom().removeClass('highlighted-element');
-    },
     
     getCurrentNodeElement: function() {
     
     getCurrentNodeElement: function() {
-        return this.getDocumentElement(this.wrapper.find('.current-node-element')[0]);
+        return this.getDocumentElement(this.wrapper.find('.current-node-element').parent()[0]);
     },
 
     getCurrentTextElement: function() {
     },
 
     getCurrentTextElement: function() {
@@ -346,7 +351,7 @@ $.extend(Canvas.prototype, {
                 element.dom().addClass('current-text-element');
             } else {
                 this.wrapper.find('.current-node-element').removeClass('current-node-element')
                 element.dom().addClass('current-text-element');
             } else {
                 this.wrapper.find('.current-node-element').removeClass('current-node-element')
-                element.dom().addClass('current-node-element');
+                element._container().addClass('current-node-element');
                 this.publisher('currentElementChanged', element);
             }
         }.bind(this);
                 this.publisher('currentElementChanged', element);
             }
         }.bind(this);