summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-06-04 22:31:20 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-06-05 00:22:20 +0300
commit024032c6745300a0cde75ad404e73a7ddff61534 (patch)
treef7a95a105f64fad3fb080337b3a227b2d9f5d3aa /indra/llui
parentce65bc2f13409d75dbc6502c970030cc5ed2e5ad (diff)
SL-15346 "Listing ID" field has OS-dependent length restriction
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/lllineeditor.cpp17
-rw-r--r--indra/llui/lllineeditor.h2
2 files changed, 17 insertions, 2 deletions
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 1badd54fca..a88a191847 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -175,6 +175,14 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
mTripleClickTimer.reset();
setText(p.default_text());
+ if (p.initial_value.isProvided()
+ && !p.control_name.isProvided())
+ {
+ // Initial value often is descriptive, like "Type some ID here"
+ // and can be longer than size limitation, ignore size
+ setText(p.initial_value.getValue().asString(), true);
+ }
+
// Initialize current history line iterator
mCurrentHistoryLine = mLineHistory.begin();
@@ -390,6 +398,11 @@ void LLLineEditor::updateTextPadding()
void LLLineEditor::setText(const LLStringExplicit &new_text)
{
+ setText(new_text, false);
+}
+
+void LLLineEditor::setText(const LLStringExplicit &new_text, bool ignore_size_limit)
+{
// If new text is identical, don't copy and don't move insertion point
if (mText.getString() == new_text)
{
@@ -407,13 +420,13 @@ void LLLineEditor::setText(const LLStringExplicit &new_text)
all_selected = all_selected || (len == 0 && hasFocus() && mSelectAllonFocusReceived);
std::string truncated_utf8 = new_text;
- if (truncated_utf8.size() > (U32)mMaxLengthBytes)
+ if (!ignore_size_limit && truncated_utf8.size() > (U32)mMaxLengthBytes)
{
truncated_utf8 = utf8str_truncate(new_text, mMaxLengthBytes);
}
mText.assign(truncated_utf8);
- if (mMaxLengthChars)
+ if (!ignore_size_limit && mMaxLengthChars)
{
mText.assign(utf8str_symbol_truncate(truncated_utf8, mMaxLengthChars));
}
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index aa5779d45f..088578a821 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -317,6 +317,8 @@ private:
virtual S32 getPreeditFontSize() const;
virtual LLWString getPreeditString() const { return getWText(); }
+ void setText(const LLStringExplicit &new_text, bool ignore_size_limit);
+
void setContextMenu(LLContextMenu* new_context_menu);
protected: