summaryrefslogtreecommitdiff
path: root/indra/newview/llexpandabletextbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llexpandabletextbox.cpp')
-rw-r--r--[-rwxr-xr-x]indra/newview/llexpandabletextbox.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index f2602c8c7d..f0331f20d8 100755..100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -77,7 +77,7 @@ public:
return 0;
}
}
- /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
+ /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect)
{
F32 right_x;
mStyle->getFont()->renderUTF8(mExpanderLabel, start,
@@ -122,8 +122,6 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLTextEditor::reshape(width, height, called_from_parent);
-
- hideOrShowExpandTextAsNeeded();
}
void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,const LLStyle::Params& input_params)
@@ -237,6 +235,7 @@ LLExpandableTextBox::LLExpandableTextBox(const Params& p)
LLTextBoxEx::Params textbox_params = p.textbox;
textbox_params.rect(rc);
mTextBox = LLUICtrlFactory::create<LLTextBoxEx>(textbox_params);
+ mTextBox->setContentTrusted(false);
mScroll->addChild(mTextBox);
updateTextBoxRect();
@@ -260,6 +259,11 @@ void LLExpandableTextBox::draw()
LLUICtrl::draw();
}
+void LLExpandableTextBox::setContentTrusted(bool trusted_content)
+{
+ mTextBox->setContentTrusted(trusted_content);
+}
+
void LLExpandableTextBox::collapseIfPosChanged()
{
if(mExpanded)
@@ -292,6 +296,12 @@ void LLExpandableTextBox::updateTextBoxRect()
mTextBox->reshape(rc.getWidth(), rc.getHeight());
mTextBox->setRect(rc);
+ // *HACK
+ // hideExpandText brakes text styles (replaces hyper-links with plain text), see ticket EXT-3290
+ // Also text segments are not removed properly. Same issue at expandTextBox().
+ // So set text again to make text box re-apply styles and clear segments.
+ // *TODO Find a solution that does not involve text segment.
+ mTextBox->setText(mText);
}
S32 LLExpandableTextBox::recalculateTextDelta(S32 text_delta)
@@ -397,8 +407,6 @@ void LLExpandableTextBox::collapseTextBox()
setRect(mCollapsedRect);
updateTextBoxRect();
-
- gViewerWindow->removePopup(this);
}
void LLExpandableTextBox::onFocusLost()
@@ -417,13 +425,19 @@ void LLExpandableTextBox::onTopLost()
void LLExpandableTextBox::updateTextShape()
{
- // I guess this should be done on every reshape(),
- // but adding this code to reshape() currently triggers bug VWR-26455,
- // which makes the text virtually unreadable.
llassert(!mExpanded);
updateTextBoxRect();
}
+void LLExpandableTextBox::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ mExpanded = false;
+ LLUICtrl::reshape(width, height, called_from_parent);
+ updateTextBoxRect();
+
+ gViewerWindow->removePopup(this);
+}
+
void LLExpandableTextBox::setValue(const LLSD& value)
{
collapseTextBox();