JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
bugfix in ws dedup when rm 1st space in inline
[peach-html5-editor.git] / editor.coffee
index da7b393..45d505b 100644 (file)
@@ -352,8 +352,8 @@ tree_dedup_space = (tree) ->
                        if n.type is TYPE_TEXT
                                i = 0
                                while i < n.text.length # don't foreach, cb might remove chars
-                                       removed = cb n, i
-                                       unless removed
+                                       advance = cb n, i
+                                       if advance
                                                i += 1
                        if n.type is TYPE_TAG
                                block = is_display_block n.el
@@ -434,8 +434,14 @@ tree_dedup_space = (tree) ->
                next = n
                next_i = i
                next_px = null
+               advance = true
                if cur?
                        removed = operate()
+                       # don't advance (to the next character next time) if we removed a
+                       # character from the same text node as ``next``, because doing so
+                       # renumbers the indexes in that string
+                       if removed and cur is next
+                               advance = false
                else
                        removed = false
                unless removed
@@ -445,7 +451,7 @@ tree_dedup_space = (tree) ->
                cur = next
                cur_i = next_i
                cur_px = next_px
-               return removed
+               return advance
        queue null
        iterate tree, queue
        queue null