STORM-501 FIXED Script-editor shows ERRORS in the wrong line.
LLTextBase::setCursor() sometimes failed to work properly if line wrapping was enabled. This is a slightly optimized version of the patch made by Satomi Ahn.meow-7.2.2
parent
8209e35643
commit
463969116f
|
|
@ -594,6 +594,8 @@ Salahzar Stenvaag
|
|||
CT-321
|
||||
Sammy Frederix
|
||||
VWR-6186
|
||||
Satomi Ahn
|
||||
STORM-501
|
||||
Scrippy Scofield
|
||||
VWR-3748
|
||||
Seg Baphomet
|
||||
|
|
|
|||
|
|
@ -2214,19 +2214,39 @@ bool LLTextBase::scrolledToEnd()
|
|||
return mScroller->isAtBottom();
|
||||
}
|
||||
|
||||
|
||||
bool LLTextBase::setCursor(S32 row, S32 column)
|
||||
{
|
||||
if (0 <= row && row < (S32)mLineInfoList.size())
|
||||
{
|
||||
S32 doc_pos = mLineInfoList[row].mDocIndexStart;
|
||||
column = llclamp(column, 0, mLineInfoList[row].mDocIndexEnd - mLineInfoList[row].mDocIndexStart - 1);
|
||||
doc_pos += column;
|
||||
updateCursorXPos();
|
||||
if (row < 0 || column < 0) return false;
|
||||
|
||||
S32 n_lines = mLineInfoList.size();
|
||||
for (S32 line = row; line < n_lines; ++line)
|
||||
{
|
||||
const line_info& li = mLineInfoList[line];
|
||||
|
||||
if (li.mLineNum < row)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (li.mLineNum > row)
|
||||
{
|
||||
break; // invalid column specified
|
||||
}
|
||||
|
||||
// Found the given row.
|
||||
S32 line_length = li.mDocIndexEnd - li.mDocIndexStart;;
|
||||
if (column >= line_length)
|
||||
{
|
||||
column -= line_length;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Found the given column.
|
||||
updateCursorXPos();
|
||||
S32 doc_pos = li.mDocIndexStart + column;
|
||||
return setCursorPos(doc_pos);
|
||||
}
|
||||
return false;
|
||||
|
||||
return false; // invalid row or column specified
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue