Fixing wrapping text when text not in first node of its parent
[fnpeditor.git] / modules / documentCanvas / canvas.js
index be5323a..cafed1a 100644 (file)
@@ -62,12 +62,16 @@ Canvas.prototype.nodeInsertAfter = function(options) {
 };\r
 \r
 Canvas.prototype.nodeWrap = function(options) {\r
+    options = _.extend({textNodeIdx: 0}, options);\r
+\r
     var element = $(this.content.find('#' + options.inside.getId()).get(0));\r
 \r
     var elementContents = element.contents();\r
-    if(elementContents.length !== 1 || elementContents.get(0).nodeType != 3)\r
+    if(elementContents.length === 0 || \r
+       elementContents.length - 1 < options.textNodeIdx || \r
+       elementContents.get(options.textNodeIdx).nodeType != 3)\r
         return false;\r
-    var textElement = elementContents.get(0);\r
+    var textElement = elementContents.get(options.textNodeIdx);\r
 \r
     var prefix = textElement.data.substr(0, options.offsetStart);\r
     var suffix = textElement.data.substr(options.offsetEnd);\r
@@ -98,7 +102,7 @@ Canvas.prototype.nodeSplit = function(options) {
         var node = this;\r
         if(passed)\r
             succeedingNodes.push(node);\r
-        if(node.isSameNode(textNode.get(0)))\r
+        if(node === textNode.get(0))\r
             passed = true;\r
     });\r
     \r
@@ -125,7 +129,7 @@ Canvas.prototype.nodeRemove = function(options) {
 Canvas.prototype.listCreate = function(options) {\r
     var element1 = $(this.content.find('#' + options.start.getId()).get(0));\r
     var element2 = $(this.content.find('#' + options.end.getId()).get(0));\r
-    if(!element1.parent().get(0).isSameNode(element2.parent().get(0)))\r
+    if(!element1.parent().get(0) === element2.parent().get(0))\r
         return false;\r
         \r
     var parent = element1.parent();\r
@@ -142,7 +146,7 @@ Canvas.prototype.listCreate = function(options) {
     var canvas = this;\r
     parent.contents().each(function() {\r
         var node = this;\r
-        if(node.isSameNode(element1.get(0)))\r
+        if(node === element1.get(0))\r
             place = 'inside';\r
         if(place === 'inside') {\r
             var $node;\r
@@ -156,7 +160,7 @@ Canvas.prototype.listCreate = function(options) {
             $node.attr('wlxml-class', 'item');\r
             nodesToWrap.push($node);\r
         }\r
-        if(node.isSameNode(element2.get(0)))\r
+        if(node === element2.get(0))\r
             return false;\r
     });\r
     \r
@@ -166,7 +170,7 @@ Canvas.prototype.listCreate = function(options) {
     \r
     var toret;\r
     if(parentNode && parentNode.isOfClass('list-items')) {\r
-        list.wrap('<div wlxml-tag="div" wlxml-class="item">');\r
+        list.wrap('<div wlxml-tag="div" wlxml-class="item" class="canvas-silent-item">');\r
         toret = list.parent();\r
     } else {\r
         toret = list;\r