From 024032c6745300a0cde75ad404e73a7ddff61534 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 4 Jun 2021 22:31:20 +0300 Subject: SL-15346 "Listing ID" field has OS-dependent length restriction --- indra/llui/lllineeditor.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'indra/llui/lllineeditor.cpp') 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(); @@ -389,6 +397,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)); } -- cgit v1.2.3 From 7c179b8e7d0b7a0f4a9412ad4525a050a1f95bbe Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Sat, 5 Jun 2021 10:12:34 +0300 Subject: SL-15346 Small adjustment --- indra/llui/lllineeditor.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'indra/llui/lllineeditor.cpp') diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index a88a191847..33037b5001 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -180,7 +180,7 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p) { // 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); + setText(p.initial_value.getValue().asString(), false); } // Initialize current history line iterator @@ -398,10 +398,10 @@ void LLLineEditor::updateTextPadding() void LLLineEditor::setText(const LLStringExplicit &new_text) { - setText(new_text, false); + setText(new_text, true); } -void LLLineEditor::setText(const LLStringExplicit &new_text, bool ignore_size_limit) +void LLLineEditor::setText(const LLStringExplicit &new_text, bool use_size_limit) { // If new text is identical, don't copy and don't move insertion point if (mText.getString() == new_text) @@ -420,13 +420,13 @@ void LLLineEditor::setText(const LLStringExplicit &new_text, bool ignore_size_li all_selected = all_selected || (len == 0 && hasFocus() && mSelectAllonFocusReceived); std::string truncated_utf8 = new_text; - if (!ignore_size_limit && truncated_utf8.size() > (U32)mMaxLengthBytes) + if (use_size_limit && truncated_utf8.size() > (U32)mMaxLengthBytes) { truncated_utf8 = utf8str_truncate(new_text, mMaxLengthBytes); } mText.assign(truncated_utf8); - if (!ignore_size_limit && mMaxLengthChars) + if (use_size_limit && mMaxLengthChars) { mText.assign(utf8str_symbol_truncate(truncated_utf8, mMaxLengthChars)); } -- cgit v1.2.3