diff options
| -rw-r--r-- | indra/llui/llchatentry.cpp | 16 | ||||
| -rw-r--r-- | indra/llui/llchatentry.h | 2 | 
2 files changed, 13 insertions, 5 deletions
| diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp index da5afd0386..e8d942b8af 100644 --- a/indra/llui/llchatentry.cpp +++ b/indra/llui/llchatentry.cpp @@ -45,7 +45,8 @@ LLChatEntry::LLChatEntry(const Params& p)      mExpandLinesCount(p.expand_lines_count),      mPrevLinesCount(0),      mSingleLineMode(false), -    mPrevExpandedLineCount(S32_MAX) +    mPrevExpandedLineCount(S32_MAX), +    mCurrentInput("")  {      // Initialize current history line iterator      mCurrentHistoryLine = mLineHistory.begin(); @@ -189,6 +190,7 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask)          {              needsReflow();          } +        mCurrentInput = "";          break;      case KEY_UP: @@ -196,6 +198,11 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask)          {              if (!mLineHistory.empty() && mCurrentHistoryLine > mLineHistory.begin())              { +                if (mCurrentHistoryLine == mLineHistory.end()) +                { +                    mCurrentInput = getText(); +                } +                  setText(*(--mCurrentHistoryLine));                  endOfDoc();              } @@ -210,16 +217,15 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask)      case KEY_DOWN:          if (mHasHistory && MASK_CONTROL == mask)          { -            if (!mLineHistory.empty() && mCurrentHistoryLine < (mLineHistory.end() - 1) ) +            if (!mLineHistory.empty() && mCurrentHistoryLine < (mLineHistory.end() - 1))              {                  setText(*(++mCurrentHistoryLine));                  endOfDoc();              } -            else if (!mLineHistory.empty() && mCurrentHistoryLine == (mLineHistory.end() - 1) ) +            else if (!mLineHistory.empty() && mCurrentHistoryLine == (mLineHistory.end() - 1))              {                  mCurrentHistoryLine++; -                std::string empty(""); -                setText(empty); +                setText(mCurrentInput);                  needsReflow();                  endOfDoc();              } diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h index 5621ede1e7..9a0e8ee91e 100644 --- a/indra/llui/llchatentry.h +++ b/indra/llui/llchatentry.h @@ -101,6 +101,8 @@ private:      S32                                 mExpandLinesCount;      S32                                 mPrevLinesCount;      S32                                 mPrevExpandedLineCount; + +    std::string                         mCurrentInput;  };  #endif /* LLCHATENTRY_H_ */ | 
