Merge pull request #3930 from Ansariel/develop-chatentry-improvement

Restore currently entered text in chat entry textbox after going through history with Ctrl-PgUp/PgDown
master
Jonathan "Geenz" Goodman 2025-04-17 20:06:39 -04:00 committed by GitHub
commit 2fb0abbffb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 5 deletions

View File

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

View File

@ -101,6 +101,8 @@ private:
S32 mExpandLinesCount;
S32 mPrevLinesCount;
S32 mPrevExpandedLineCount;
std::string mCurrentInput;
};
#endif /* LLCHATENTRY_H_ */