Eric Promislow:

I've narrowed down the problem to RunStyles::SplitRun.  If posRun and position 
both
== 0, then no insertion is made.  Back in DecorationList::FillRange(), the test
current->Empty() succeeds because the current indicator isn't associated with 
more
than one segment (run range), so the indicator is deleted.

  The problem was that FillRange was assuming that if it called
SplitRun then a new run would be created but that isn't the case if
there is already a run start at that position as there is at position
0. So changed the code to only call SplitRun and increment runEnd if
there is a need. This appears to have fixed the problem. Committed to
CVS. Diff looks like this:

        } else {
-               runStart = SplitRun(position);
-               runEnd++;
+               if (starts->PositionFromPartition(runStart) < position) {
+                       runStart = SplitRun(position);
+                       runEnd++;
+               }
        }

  Neil
_______________________________________________
Scintilla-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scintilla-interest

Reply via email to