580,10 → 580,11 |
{ |
if(line.Length <= lastLineLen || m.endPos < lastLineLen) |
{ |
LineFragment[] newLine = new LineFragment[lastLineLen * (line.Length == lastLineLen ? 2 : 1)]; |
LineFragment[] newLine = new LineFragment[lastLineLen * (line.Length + 1 >= lastLineLen ? 2 : 1)]; |
|
if(m.endPos > 0) Array.Copy(line, 0, newLine, 0, m.endPos); |
if(lastLineLen > m.endPos) Array.Copy(line, m.endPos, newLine, m.endPos+1, lastLineLen - m.endPos); |
|
line = newLine; |
lineFragments[m.endLine] = line; |
} |
645,8 → 646,9 |
LineFragment[] oldLine = (LineFragment[])lineFragments[m.endLine]; |
int oldLineLen = (m.endLine == linesCount - 1) ? lastLineLen : oldLine.Length; |
LineFragment[] line1 = new LineFragment[m.endPos]; |
LineFragment[] line2 = new LineFragment[ |
(m.endLine == linesCount - 1) ? NEW_LINE_LENGTH : oldLine.Length - m.endPos]; |
LineFragment[] line2 = new LineFragment[(m.endLine == linesCount - 1) |
? (int)Math.Ceiling((double)(oldLineLen - m.endPos) / NEW_LINE_LENGTH) * NEW_LINE_LENGTH |
: oldLineLen - m.endPos]; |
|
if(m.endPos > 0) Array.Copy(oldLine, 0, line1, 0, m.endPos); |
if(oldLineLen - m.endPos > 0) Array.Copy(oldLine, m.endPos, line2, 0, oldLineLen - m.endPos); |
654,9 → 656,9 |
lineFragments[m.endLine] = line1; |
lineFragments.Insert(m.endLine + 1, line2); |
lineBackColors.Insert(m.endLine + 1, backColor); |
linesCount++; |
|
if(m.endLine == linesCount - 1) lastLineLen = oldLineLen - m.endPos; |
linesCount++; |
} |
|
// update screen |