STORM-1234 FIXED text editor selection which was skipping the last character in line.

Added handling of the wrapped lines case when calculating the starting position for selection.

The bug is a regression caused by the fix of STORM-320 which was dealing with calculating the position of the input cursor while navigating through the lines of text with word wrapping enabled.
meow-7.2.2
Seth ProductEngine 2011-07-14 23:46:27 +03:00
parent fc5aaf5df8
commit aad5943ab0
1 changed files with 11 additions and 2 deletions

View File

@ -2024,8 +2024,17 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round,
}
else if (hit_past_end_of_line && segmentp->getEnd() >= line_iter->mDocIndexEnd)
{
// segment wraps to next line, so just set doc pos to the end of the line
pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength());
if (getLineNumFromDocIndex(line_iter->mDocIndexEnd - 1) == line_iter->mLineNum)
{
// if segment wraps to the next line we should step one char back
// to compensate for the space char between words
// which is removed due to wrapping
pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength());
}
else
{
pos = llclamp(line_iter->mDocIndexEnd, 0, getLength());
}
break;
}
start_x += text_width;