SL-15346 "Listing ID" field has OS-dependent length restriction

master
Andrey Kleshchev 2021-06-04 22:31:20 +03:00
parent ce65bc2f13
commit 024032c674
3 changed files with 19 additions and 3 deletions

View File

@ -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));
}

View File

@ -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:

View File

@ -20,9 +20,10 @@
name="message">
Listing ID:
</text>
<!--listing_id is a positive S32-->
<line_editor
type="string"
length="1"
max_length_bytes="10"
follows="top|right"
font="SansSerif"
height="20"