Setting caret after creating list
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 17 Jul 2013 12:51:58 +0000 (14:51 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 17 Jul 2013 12:51:58 +0000 (14:51 +0200)
modules/documentCanvas/canvas/canvas.js
modules/documentCanvas/commands.js

index c2b579b..7143b79 100644 (file)
@@ -434,6 +434,9 @@ $.extend(Cursor.prototype, {
     getSelectionAnchor: function() {
         return this.getSelectionBoundry('anchor');
     },
+    getSelectionFocus: function() {
+        return this.getSelectionBoundry('focus');
+    },
     getSelectionBoundry: function(which) {
         var selection = window.getSelection(),
             anchorElement = this.canvas.getDocumentElement(selection.anchorNode),
@@ -450,6 +453,14 @@ $.extend(Cursor.prototype, {
                 offsetAtEnd: anchorElement && anchorElement.getText().length === selection.anchorOffset
             };
         }
+        if(which === 'focus') {
+            return {
+                element: focusElement,
+                offset: selection.focusOffset,
+                offsetAtBeginning: selection.focusOffset === 0,
+                offsetAtEnd: focusElement && focusElement.getText().length === selection.focusOffset
+            };
+        }
         
         var element,
             offset;
index 96b7c70..b0fb093 100644 (file)
@@ -56,7 +56,9 @@ commands.register('toggle-list', function(canvas, params) {
         parent2 = selectionEnd.element.parent() || undefined;
 
     if(params.toggle) {
+        var selectionFocus = cursor.getSelectionFocus();
         canvas.list.create({element1: parent1, element2: parent2});
+        canvas.setCurrentElement(selectionFocus.element, {caretTo: selectionFocus.offset});
     } else {
         if(canvas.list.areItemsOfTheSameList({element1: parent1, element2: parent2})) {
             canvas.list.extractItems({element1: parent1, element2: parent2, merge: false});