diff --git a/nel/include/nel/gui/group_editbox.h b/nel/include/nel/gui/group_editbox.h index 355c01d3c..36b8d63b4 100644 --- a/nel/include/nel/gui/group_editbox.h +++ b/nel/include/nel/gui/group_editbox.h @@ -64,13 +64,14 @@ namespace NLGUI /// Accessors std::string getInputString() const; + std::string getPrompt() const; const u32string &getInputStringRef() const { return _InputString; } - const ucstring &getPrompt() const { return _Prompt; } + const u32string &getPromptRef() const { return _Prompt; } /** Set the prompt * NB : line returns are encoded as '\n', not '\r\n' */ - void setPrompt(const ucstring &s) { _Prompt = s; } + void setPrompt(const std::string &s); void setInputString(const std::string &str); void setInputStringRef(const u32string &str) {_InputString = str; }; void setInputStringAsInt(sint32 val); @@ -228,7 +229,7 @@ namespace NLGUI NLMISC::CRGBA _BackSelectColor; // Text info - ucstring _Prompt; + u32string _Prompt; u32string _InputString; CViewText *_ViewText; diff --git a/nel/src/gui/group_editbox.cpp b/nel/src/gui/group_editbox.cpp index 037ae4656..1453ba5fe 100644 --- a/nel/src/gui/group_editbox.cpp +++ b/nel/src/gui/group_editbox.cpp @@ -96,7 +96,7 @@ namespace NLGUI _ViewTextDeltaX(0) { - _Prompt = ">"; + _Prompt = u32string(1, '>'); _BackSelectColor= CRGBA::White; _TextSelectColor= CRGBA::Black; } @@ -170,7 +170,7 @@ namespace NLGUI else if( name == "prompt" ) { - return _Prompt.toString(); + return CUtfStringView(_Prompt).toUtf8(); } else if( name == "enter_type" ) @@ -354,7 +354,7 @@ namespace NLGUI else if( name == "prompt" ) { - _Prompt = value; + _Prompt = CUtfStringView(value).toUtf32(); return; } else @@ -477,7 +477,7 @@ namespace NLGUI xmlSetProp( node, BAD_CAST "max_chars_size", BAD_CAST toString( _MaxCharsSize ).c_str() ); xmlSetProp( node, BAD_CAST "enter_loose_focus", BAD_CAST toString( _LooseFocusOnEnter ).c_str() ); xmlSetProp( node, BAD_CAST "enter_recover_focus", BAD_CAST toString( _RecoverFocusOnEnter ).c_str() ); - xmlSetProp( node, BAD_CAST "prompt", BAD_CAST _Prompt.toString().c_str() ); + xmlSetProp( node, BAD_CAST "prompt", BAD_CAST CUtfStringView(_Prompt).toUtf8().c_str() ); std::string e; switch( _EntryType ) @@ -606,7 +606,7 @@ namespace NLGUI if (prop) _ResetFocusOnHide = convertBool(prop); prop = (char*) xmlGetProp( cur, (xmlChar*)"prompt" ); - if (prop) _Prompt = (const char*)prop; + if (prop) _Prompt = CUtfStringView((const char*)prop).toUtf32(); prop = (char*) xmlGetProp( cur, (xmlChar*)"entry_type" ); _EntryType = Text; @@ -1436,13 +1436,13 @@ namespace NLGUI ucstring usTmp; if (_EntryType == Password) { - usTmp = _Prompt; + usTmp = CUtfStringView(_Prompt).toUtf16(); for (uint32 i = 0; i < _InputString.size(); ++i) usTmp += "*"; } else { - usTmp = _Prompt + CUtfStringView(_InputString).toUtf16(); + usTmp = CUtfStringView(_Prompt + _InputString).toUtf16(); } _ViewText->setText (usTmp); } @@ -1624,6 +1624,12 @@ namespace NLGUI } + // ---------------------------------------------------------------------------- + void CGroupEditBox::setPrompt(const std::string &s) + { + _Prompt = CUtfStringView(s).toUtf32(); + } + // ---------------------------------------------------------------------------- void CGroupEditBox::setInputString(const std::string &str) @@ -1742,6 +1748,12 @@ namespace NLGUI CInterfaceGroup::setActive(active); } + // *************************************************************************** + std::string CGroupEditBox::getPrompt() const + { + return NLMISC::CUtfStringView(_Prompt).toUtf8(); + } + // *************************************************************************** std::string CGroupEditBox::getInputString() const { diff --git a/ryzom/client/src/interface_v3/action_handler_edit.cpp b/ryzom/client/src/interface_v3/action_handler_edit.cpp index 055a77422..bde8f5389 100644 --- a/ryzom/client/src/interface_v3/action_handler_edit.cpp +++ b/ryzom/client/src/interface_v3/action_handler_edit.cpp @@ -288,11 +288,11 @@ class CAHEditGotoLineBegin : public CAHEdit // go to the start of line if (_GroupEdit->getViewText()) { - sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length()); + sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length()); if (line == -1) return; - sint newPos = std::max(_GroupEdit->getViewText()->getLineStartIndex(line), (sint) _GroupEdit->getPrompt().length()); + sint newPos = std::max(_GroupEdit->getViewText()->getLineStartIndex(line), (sint) _GroupEdit->getPromptRef().length()); if (newPos == -1) return; - _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPromptRef().length()); _GroupEdit->setCursorAtPreviousLineEnd(false); } } @@ -310,20 +310,20 @@ class CAHEditGotoLineEnd : public CAHEdit { if (_GroupEdit->getViewText()->getMultiLine()) { - sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length(), _GroupEdit->isCursorAtPreviousLineEnd()); + sint line = _GroupEdit->getViewText()->getLineFromIndex(_GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length(), _GroupEdit->isCursorAtPreviousLineEnd()); if (line == -1) return; sint newPos; bool endOfPreviousLine; _GroupEdit->getViewText()->getLineEndIndex(line, newPos, endOfPreviousLine); if (newPos != -1) { - _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(newPos - (sint32)_GroupEdit->getPromptRef().length()); _GroupEdit->setCursorAtPreviousLineEnd(endOfPreviousLine); } } else { - _GroupEdit->setCursorPos((sint32)_GroupEdit->getPrompt().length() + (sint32)_GroupEdit->getInputString().length()); + _GroupEdit->setCursorPos((sint32)_GroupEdit->getPromptRef().length() + (sint32)_GroupEdit->getInputString().length()); } } } @@ -378,7 +378,7 @@ class CAHEditPreviousLine : public CAHEdit } else if (_GroupEdit->getViewText()->getMultiLine()) { - uint cursorPosInText = _GroupEdit->getCursorPos() + (uint)_GroupEdit->getPrompt().length(); + uint cursorPosInText = _GroupEdit->getCursorPos() + (uint)_GroupEdit->getPromptRef().length(); if ( (_GroupEdit->getCursorPos() == (sint32) _GroupEdit->getInputStringRef().length() && _GroupEdit->getViewText()->getNumLine() == 1) || _GroupEdit->getViewText()->getLineFromIndex(cursorPosInText, _GroupEdit->isCursorAtPreviousLineEnd()) == 0 @@ -396,7 +396,7 @@ class CAHEditPreviousLine : public CAHEdit _GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd); if (newLineEnd) { - _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPromptRef().length()); _GroupEdit->setCursorAtPreviousLineEnd(true); sint32 newPos = _GroupEdit->getCursorPos(); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); @@ -417,7 +417,7 @@ class CAHEditPreviousLine : public CAHEdit { _GroupEdit->setCursorPos(newCharIndex + 1); } - _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPromptRef().length()); sint32 newpos = _GroupEdit->getCursorPos(); clamp(newpos, (sint32) 0, (sint32)_GroupEdit->getInputStringRef().size()); _GroupEdit->setCursorPos(newpos); @@ -452,7 +452,7 @@ class CAHEditNextLine : public CAHEdit { float cx, cy; float height; - _GroupEdit->getViewText()->getCharacterPositionFromIndex(_GroupEdit->getCursorPos() + (sint)_GroupEdit->getPrompt().length(), _GroupEdit->isCursorAtPreviousLineEnd(), cx, cy, height); + _GroupEdit->getViewText()->getCharacterPositionFromIndex(_GroupEdit->getCursorPos() + (sint)_GroupEdit->getPromptRef().length(), _GroupEdit->isCursorAtPreviousLineEnd(), cx, cy, height); if (cy != 0) { cy -= height; @@ -461,7 +461,7 @@ class CAHEditNextLine : public CAHEdit _GroupEdit->getViewText()->getCharacterIndexFromPosition(cx, cy, newCharIndex, newLineEnd); if (newLineEnd) { - _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(newCharIndex - (sint32)_GroupEdit->getPromptRef().length()); _GroupEdit->setCursorAtPreviousLineEnd(true); sint32 newPos = _GroupEdit->getCursorPos(); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); @@ -480,9 +480,9 @@ class CAHEditNextLine : public CAHEdit } else { - _GroupEdit->setCursorPos(min(sint32(newCharIndex + 1), sint32(_GroupEdit->getInputStringRef().length() + _GroupEdit->getPrompt().length()))); + _GroupEdit->setCursorPos(min(sint32(newCharIndex + 1), sint32(_GroupEdit->getInputStringRef().length() + _GroupEdit->getPromptRef().length()))); } - _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPrompt().length()); + _GroupEdit->setCursorPos(_GroupEdit->getCursorPos()-(sint32)_GroupEdit->getPromptRef().length()); sint32 newPos = _GroupEdit->getCursorPos(); clamp(newPos, (sint32) 0, (sint32) _GroupEdit->getInputStringRef().size()); _GroupEdit->setCursorPos(newPos); diff --git a/ryzom/client/src/interface_v3/chat_window.cpp b/ryzom/client/src/interface_v3/chat_window.cpp index ed1a220ca..72a877cb7 100644 --- a/ryzom/client/src/interface_v3/chat_window.cpp +++ b/ryzom/client/src/interface_v3/chat_window.cpp @@ -262,7 +262,7 @@ void CChatWindow::setPrompt(const ucstring &prompt) if (!_Chat) return; CGroupEditBox *eb = dynamic_cast(_Chat->getGroup("eb")); if (!eb) return; - eb->setPrompt(prompt); + eb->setPrompt(prompt.toUtf8()); } void CChatWindow::setPromptColor(NLMISC::CRGBA col)