Fixed a couple of problems with inserting text when there was a
selection (for example, moving around text with the mouse). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23789 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -3056,7 +3056,7 @@ BTextView::_HandleAlphaKey(const char *bytes, int32 numBytes)
|
|||||||
} else
|
} else
|
||||||
_DoInsertText(bytes, numBytes, fSelStart, NULL, NULL);
|
_DoInsertText(bytes, numBytes, fSelStart, NULL, NULL);
|
||||||
|
|
||||||
fClickOffset = fSelEnd;
|
fSelStart = fSelEnd = fClickOffset = fSelStart + numBytes;
|
||||||
|
|
||||||
ScrollToOffset(fClickOffset);
|
ScrollToOffset(fClickOffset);
|
||||||
}
|
}
|
||||||
@@ -3481,6 +3481,12 @@ BTextView::_DoInsertText(const char *inText, int32 inLength, int32 inOffset,
|
|||||||
if (TextLength() + inLength > MaxBytes())
|
if (TextLength() + inLength > MaxBytes())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (fSelStart != fSelEnd
|
||||||
|
&& fSelStart != 0
|
||||||
|
&& fSelEnd != 0) {
|
||||||
|
|
||||||
|
Select(fSelStart, fSelStart);
|
||||||
|
}
|
||||||
// Don't do any check, the public methods will have adjusted
|
// Don't do any check, the public methods will have adjusted
|
||||||
// eventual bogus values...
|
// eventual bogus values...
|
||||||
|
|
||||||
@@ -3491,13 +3497,8 @@ BTextView::_DoInsertText(const char *inText, int32 inLength, int32 inOffset,
|
|||||||
// copy data into buffer
|
// copy data into buffer
|
||||||
InsertText(inText, inLength, inOffset, inRuns);
|
InsertText(inText, inLength, inOffset, inRuns);
|
||||||
|
|
||||||
// offset the caret/selection
|
|
||||||
int32 saveStart = fSelStart;
|
|
||||||
fSelStart += inLength;
|
|
||||||
fSelEnd += inLength;
|
|
||||||
|
|
||||||
// recalc line breaks and draw the text
|
// recalc line breaks and draw the text
|
||||||
_Refresh(saveStart, fSelEnd, true, false);
|
_Refresh(inOffset, textLength, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user