Pull merge from viewer-release

meow-7.2.2
Merov Linden 2013-05-22 13:59:53 -07:00
commit 51fab4d45c
1 changed files with 35 additions and 18 deletions

View File

@ -2131,12 +2131,17 @@ void LLTextEditor::drawPreeditMarker()
continue;
}
S32 preedit_left = mVisibleTextRect.mLeft;
line_info& line = mLineInfoList[cur_line];
LLRect text_rect(line.mRect);
text_rect.mRight = mDocumentView->getRect().getWidth(); // clamp right edge to document extents
text_rect.translate(mDocumentView->getRect().mLeft, mDocumentView->getRect().mBottom); // adjust by scroll position
S32 preedit_left = text_rect.mLeft;
if (left > line_start)
{
preedit_left += mFont->getWidth(text, line_start, left - line_start);
}
S32 preedit_right = mVisibleTextRect.mLeft;
S32 preedit_right = text_rect.mLeft;
if (right < line_end)
{
preedit_right += mFont->getWidth(text, line_start, right - line_start);
@ -2149,18 +2154,18 @@ void LLTextEditor::drawPreeditMarker()
if (mPreeditStandouts[i])
{
gl_rect_2d(preedit_left + preedit_standout_gap,
line_y + preedit_standout_position,
preedit_right - preedit_standout_gap - 1,
line_y + preedit_standout_position - preedit_standout_thickness,
(mCursorColor.get() * preedit_standout_brightness + mWriteableBgColor.get() * (1 - preedit_standout_brightness)).setAlpha(1.0f));
text_rect.mBottom + mFont->getDescenderHeight() - 1,
preedit_right - preedit_standout_gap - 1,
text_rect.mBottom + mFont->getDescenderHeight() - 1 - preedit_standout_thickness,
(mCursorColor.get() * preedit_standout_brightness + mWriteableBgColor.get() * (1 - preedit_standout_brightness)).setAlpha(1.0f));
}
else
{
gl_rect_2d(preedit_left + preedit_marker_gap,
line_y + preedit_marker_position,
preedit_right - preedit_marker_gap - 1,
line_y + preedit_marker_position - preedit_marker_thickness,
(mCursorColor.get() * preedit_marker_brightness + mWriteableBgColor.get() * (1 - preedit_marker_brightness)).setAlpha(1.0f));
text_rect.mBottom + mFont->getDescenderHeight() - 1,
preedit_right - preedit_marker_gap - 1,
text_rect.mBottom + mFont->getDescenderHeight() - 1 - preedit_marker_thickness,
(mCursorColor.get() * preedit_marker_brightness + mWriteableBgColor.get() * (1 - preedit_marker_brightness)).setAlpha(1.0f));
}
}
}
@ -2243,12 +2248,13 @@ void LLTextEditor::draw()
LLRect clip_rect(mVisibleTextRect);
clip_rect.stretch(1);
LLLocalClipRect clip(clip_rect);
drawPreeditMarker();
}
LLTextBase::draw();
drawLineNumbers();
drawPreeditMarker();
//RN: the decision was made to always show the orange border for keyboard focus but do not put an insertion caret
// when in readonly mode
mBorder->setKeyboardFocusHighlight( hasFocus() );// && !mReadOnly);
@ -2698,14 +2704,20 @@ BOOL LLTextEditor::hasPreeditString() const
void LLTextEditor::resetPreedit()
{
if (hasSelection())
{
if (hasPreeditString())
{
llwarns << "Preedit and selection!" << llendl;
deselect();
}
else
{
deleteSelection(TRUE);
}
}
if (hasPreeditString())
{
if (hasSelection())
{
llwarns << "Preedit and selection!" << llendl;
deselect();
}
setCursorPos(mPreeditPositions.front());
removeStringNoUndo(mCursorPos, mPreeditPositions.back() - mCursorPos);
insertStringNoUndo(mCursorPos, mPreeditOverwrittenWString);
@ -2753,7 +2765,12 @@ void LLTextEditor::updatePreedit(const LLWString &preedit_string,
{
mPreeditOverwrittenWString.clear();
}
insertStringNoUndo(insert_preedit_at, mPreeditWString);
segment_vec_t segments;
LLStyleConstSP sp(new LLStyle(getStyleParams()));
segments.push_back(new LLNormalTextSegment(sp, 0, mPreeditWString.length(), *this));
insertStringNoUndo(insert_preedit_at, mPreeditWString, &segments);
mPreeditStandouts = preedit_standouts;