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:
Stefano Ceccherini 2008-01-30 10:58:04 +00:00
parent 3cb77ecf33
commit 9d73eec0ef
1 changed files with 9 additions and 8 deletions

View File

@ -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);
}