From f3acead9b013a34d21bd75867c3351862b5df07f Mon Sep 17 00:00:00 2001
From: =?utf8?q?Aleksander=20=C5=81ukasz?=
 <aleksander.lukasz@nowoczesnapolska.org.pl>
Date: Fri, 28 Jun 2013 14:32:07 +0200
Subject: [PATCH] Fixing wrapping nodes with subnodes

canvas.nodeWrap was given wrong arguments when text selected on the
left of first subnode was longer than the text selected on the right
of last subnode
---
 modules/documentCanvas/canvasManager.js | 27 +++++++++++++++----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/modules/documentCanvas/canvasManager.js b/modules/documentCanvas/canvasManager.js
index b7e7212..aff3b46 100644
--- a/modules/documentCanvas/canvasManager.js
+++ b/modules/documentCanvas/canvasManager.js
@@ -102,22 +102,27 @@ Manager.prototype.insertNewNode = function(wlxmlTag, wlxmlClass) {
     if(selection.getRangeAt(0).collapsed) {
     
     } else {
+        var textNodeIdx;
+        var parent = $(selection.anchorNode).parent();
         var offsetStart = selection.anchorOffset;
         var offsetEnd = selection.focusOffset;
-        if(offsetStart > offsetEnd) {
-            var tmp = offsetStart;
-            offsetStart = offsetEnd;
-            offsetEnd = tmp;
-        }
         
+        if(selection.anchorNode === selection.focusNode) {
+            if(offsetStart > offsetEnd) {
+                var tmp = offsetStart;
+                offsetStart = offsetEnd;
+                offsetEnd = tmp;
+            }
+            textNodeIdx = parent.contents().index($(selection.anchorNode));
+        } else {
+            if(parent.contents().index($(selection.anchorNode)) > parent.contents().index($(selection.focusNode))) {
+                offsetStart = selection.focusOffset;
+                offsetEnd = selection.anchorOffset;
+            }
+            textNodeIdx = [parent.contents().index($(selection.anchorNode)), parent.contents().index($(selection.focusNode))];
+        }
         
         var wrapper = canvasNode.create({tag: wlxmlTag, klass: wlxmlClass});
-        var parent = $(selection.anchorNode).parent();
-        
-        var textNodeIdx = parent.contents().index($(selection.anchorNode));
-        if(selection.anchorNode != selection.focusNode) {
-            textNodeIdx = [textNodeIdx, parent.contents().index($(selection.focusNode))];
-        }
         this.canvas.nodeWrap({inside: canvasNode.create(parent),
                               _with: wrapper,
                               offsetStart: offsetStart,
-- 
2.20.1