myTaskFile.incrementLines(myOldLine + 1, lineChange);
int newEndOffsetInLine = offset + e.getNewLength() - document.getLineStartOffset(newLine);
int oldEndOffsetInLine = offset + e.getOldLength() - myOldLineStartOffset;
- myTaskFile.updateLine(lineChange, myOldLine, newEndOffsetInLine, oldEndOffsetInLine);
+ myTaskFile.updateLine(lineChange, myOldLine, newEndOffsetInLine, oldEndOffsetInLine, useLength());
}
}
protected abstract void updateTaskWindowLength(CharSequence fragment, TaskWindow taskWindow, int change);
+
+ protected abstract boolean useLength();
}
* @param newEndOffsetInLine distance from line start to end of inserted fragment
* @param oldEndOffsetInLine distance from line start to end of changed fragment
*/
- public void updateLine(int lineChange, int line, int newEndOffsetInLine, int oldEndOffsetInLine) {
+ public void updateLine(int lineChange, int line, int newEndOffsetInLine, int oldEndOffsetInLine, boolean useLength) {
for (TaskWindow w : task_windows) {
if ((w.getLine() == line) && (w.getStart() > oldEndOffsetInLine)) {
int distance = w.getStart() - oldEndOffsetInLine;
if (CCProjectService.indexIsValid(prevIndex, task_windows)) {
TaskWindow prevTW = task_windows.get(prevIndex);
if (prevTW.getLine() == line) {
- int endOffset = prevTW.getStart() + prevTW.getReplacementLength();
+ int prevLength = useLength ? prevTW.getLength() : prevTW.getReplacementLength();
+ int endOffset = prevTW.getStart() + prevLength;
if (endOffset >= newEndOffsetInLine) {
coveredByPrevTW = true;
}