diff options
Diffstat (limited to 'indra/llui/lltexteditor.cpp')
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 30 | 
1 files changed, 29 insertions, 1 deletions
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index cfe729be06..58b785fcdd 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -274,7 +274,9 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :      mShowChatMentionPicker(false),      mEnableTooltipPaste(p.enable_tooltip_paste),      mPassDelete(false), -    mKeepSelectionOnReturn(false) +    mKeepSelectionOnReturn(false), +    mSelectAllOnFocusReceived(false), +    mSelectedOnFocusReceived(false)  {      mSourceID.generate(); @@ -398,6 +400,7 @@ void LLTextEditor::selectNext(const std::string& search_text_in, bool case_insen      setCursorPos(loc);      mIsSelecting = true; +    mSelectedOnFocusReceived = false;      mSelectionEnd = mCursorPos;      mSelectionStart = llmin((S32)getLength(), (S32)(mCursorPos + search_text.size()));  } @@ -677,6 +680,13 @@ bool LLTextEditor::canSelectAll() const      return true;  } +//virtual +void LLTextEditor::deselect() +{ +    LLTextBase::deselect(); +    mSelectedOnFocusReceived = false; +} +  // virtual  void LLTextEditor::selectAll()  { @@ -694,6 +704,11 @@ void LLTextEditor::selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_p      endSelection();  } +void LLTextEditor::setSelectAllOnFocusReceived(bool b) +{ +    mSelectAllOnFocusReceived = b; +} +  void LLTextEditor::insertEmoji(llwchar emoji)  {      LL_INFOS() << "LLTextEditor::insertEmoji(" << wchar_utf8_preview(emoji) << ")" << LL_ENDL; @@ -795,8 +810,16 @@ bool LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)      // Delay cursor flashing      resetCursorBlink(); +    mSelectedOnFocusReceived = false;      if (handled && !gFocusMgr.getMouseCapture())      { +        if (!mask && mSelectAllOnFocusReceived) +        { +            mIsSelecting = false; +            mSelectionStart = getLength(); +            mSelectionEnd = 0; +            mSelectedOnFocusReceived = true; +        }          gFocusMgr.setMouseCapture( this );      }      return handled; @@ -2200,6 +2223,11 @@ void LLTextEditor::focusLostHelper()          gEditMenuHandler = NULL;      } +    if (mSelectedOnFocusReceived) +    { +        deselect(); +    } +      if (mCommitOnFocusLost)      {          onCommit();  | 
