diff --git a/src/game.cpp b/src/game.cpp index 45b879ff2..a8f6bc992 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1102,8 +1102,16 @@ static void updateChat(Client& client, f32 dtime, bool show_debug, if (show_debug) chat_y += line_height; - core::rect rect(10, chat_y, font->getDimension(recent_chat.c_str()).Width +10, - chat_y + (recent_chat_count * line_height)); + // first pass to calculate height of text to be set + s32 width = std::min(font->getDimension(recent_chat.c_str()).Width + 10, + porting::getWindowSize().X - 20); + core::rect rect(10, chat_y, width, chat_y + porting::getWindowSize().Y); + guitext_chat->setRelativePosition(rect); + + //now use real height of text and adjust rect according to this size + rect = core::rect(10, chat_y, width, + chat_y + guitext_chat->getTextHeight()); + guitext_chat->setRelativePosition(rect); // Don't show chat if disabled or empty or profiler is enabled