diff options
| author | Alexander Gavriliuk <alexandrgproductengine@lindenlab.com> | 2023-11-30 13:59:14 +0100 | 
|---|---|---|
| committer | Guru <alexandrgproductengine@lindenlab.com> | 2023-11-30 14:08:29 +0100 | 
| commit | 2fad5a770b3583e576992d075c24bc0e25443053 (patch) | |
| tree | ff1e1704392a077741e01d7cf4522f7b9eb9e5ed | |
| parent | 337b2fcc3605ef00d0338b1588c2ec86c265fd68 (diff) | |
SL-19801 Log unicode characters for debug
| -rw-r--r-- | indra/llcommon/llstring.cpp | 24 | ||||
| -rw-r--r-- | indra/llcommon/llstring.h | 2 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llview.cpp | 2 | 
4 files changed, 28 insertions, 1 deletions
| diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index d68cbaa22c..81b0207038 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -365,6 +365,30 @@ S32 wchar_utf8_length(const llwchar wc)  	}  } +std::string wchar_utf8_preview(const llwchar wc) +{ +    std::ostringstream oss; +    oss << std::hex << std::uppercase << (U32)wc; + +    U8 out_bytes[8]; +    U32 size = (U32)wchar_to_utf8chars(wc, (char*)out_bytes); + +    if (size > 1) +    { +        oss << " ["; +        for (U32 i = 0; i < size; ++i) +        { +            if (i) +            { +                oss << ", "; +            } +            oss << (int)out_bytes[i]; +        } +        oss << "]"; +    } + +    return oss.str(); +}  S32 wstring_utf8_length(const LLWString& wstr)  { diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 62403969e4..8def59ed7f 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -682,6 +682,8 @@ LL_COMMON_API S32 wstring_utf8_length(const LLWString& wstr);  // Length in bytes of this wide char in a UTF8 string  LL_COMMON_API S32 wchar_utf8_length(const llwchar wc);  +LL_COMMON_API std::string wchar_utf8_preview(const llwchar wc); +  LL_COMMON_API std::string utf8str_tolower(const std::string& utf8str);  // Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string. diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7aef056e5a..3910be1443 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -682,6 +682,7 @@ void LLTextEditor::selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_p  void LLTextEditor::insertEmoji(llwchar emoji)  { +	LL_INFOS() << "LLTextEditor::insertEmoji(" << wchar_utf8_preview(emoji) << ")" << LL_ENDL;  	auto styleParams = LLStyle::Params();  	styleParams.font = LLFontGL::getFontEmoji();  	auto segment = new LLEmojiTextSegment(new LLStyle(styleParams), mCursorPos, mCursorPos + 1, *this); diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 0046105870..7b6661a519 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -1024,7 +1024,7 @@ BOOL LLView::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent)  			handled = handleUnicodeCharHere(uni_char);  			if (handled && LLView::sDebugKeys)  			{ -				LL_INFOS() << "Unicode key handled by " << getName() << LL_ENDL; +				LL_INFOS() << "Unicode key " << wchar_utf8_preview(uni_char) << " is handled by " << getName() << LL_ENDL;  			}  		}  	} | 
