Index: binaries/data/mods/public/gui/gamesetup/gamesetup.xml =================================================================== --- binaries/data/mods/public/gui/gamesetup/gamesetup.xml +++ binaries/data/mods/public/gui/gamesetup/gamesetup.xml @@ -169,7 +169,7 @@ - + Send Index: binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml =================================================================== --- binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml +++ binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml @@ -83,7 +83,7 @@ Server Name: - + this.caption = getDefaultGameName(); Index: binaries/data/mods/public/gui/lobby/lobby_panels.xml =================================================================== --- binaries/data/mods/public/gui/lobby/lobby_panels.xml +++ binaries/data/mods/public/gui/lobby/lobby_panels.xml @@ -251,7 +251,7 @@ - + submitChatInput(); autoCompleteText(this, Engine.GetPlayerList().map(player => player.name)); Index: source/gui/ObjectTypes/CInput.cpp =================================================================== --- source/gui/ObjectTypes/CInput.cpp +++ source/gui/ObjectTypes/CInput.cpp @@ -134,6 +134,10 @@ // Text has been committed, either single key presses or through an IME std::wstring text = wstring_from_utf8(ev->ev.text.text); + // Check max length + if (m_MaxLength != 0 && static_cast(m_Caption.length()) >= m_MaxLength) + return IN_HANDLED; + m_WantedX = 0.0f; if (SelectingText()) @@ -321,7 +325,7 @@ if (cooked == 0) return; - // check max length + // Check max length if (m_MaxLength != 0 && static_cast(m_Caption.length()) >= m_MaxLength) break; @@ -602,6 +606,10 @@ if (SelectingText()) DeleteCurSelection(); + // Check max length + if (m_MaxLength != 0 && static_cast(m_Caption.length()) >= m_MaxLength) + return IN_HANDLED; + if (m_iBufferPos == static_cast(m_Caption.length())) m_Caption += text; else