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:
parent
3cb77ecf33
commit
9d73eec0ef
|
@ -3056,7 +3056,7 @@ BTextView::_HandleAlphaKey(const char *bytes, int32 numBytes)
|
|||
} else
|
||||
_DoInsertText(bytes, numBytes, fSelStart, NULL, NULL);
|
||||
|
||||
fClickOffset = fSelEnd;
|
||||
fSelStart = fSelEnd = fClickOffset = fSelStart + numBytes;
|
||||
|
||||
ScrollToOffset(fClickOffset);
|
||||
}
|
||||
|
@ -3480,7 +3480,13 @@ BTextView::_DoInsertText(const char *inText, int32 inLength, int32 inOffset,
|
|||
|
||||
if (TextLength() + inLength > MaxBytes())
|
||||
return;
|
||||
|
||||
|
||||
if (fSelStart != fSelEnd
|
||||
&& fSelStart != 0
|
||||
&& fSelEnd != 0) {
|
||||
|
||||
Select(fSelStart, fSelStart);
|
||||
}
|
||||
// Don't do any check, the public methods will have adjusted
|
||||
// eventual bogus values...
|
||||
|
||||
|
@ -3491,13 +3497,8 @@ BTextView::_DoInsertText(const char *inText, int32 inLength, int32 inOffset,
|
|||
// copy data into buffer
|
||||
InsertText(inText, inLength, inOffset, inRuns);
|
||||
|
||||
// offset the caret/selection
|
||||
int32 saveStart = fSelStart;
|
||||
fSelStart += inLength;
|
||||
fSelEnd += inLength;
|
||||
|
||||
// recalc line breaks and draw the text
|
||||
_Refresh(saveStart, fSelEnd, true, false);
|
||||
_Refresh(inOffset, textLength, true, false);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue