diff --git a/source/gui/ObjectTypes/CButton.cpp b/source/gui/ObjectTypes/CButton.cpp index d401f9d540..5a74cba4d0 100644 --- a/source/gui/ObjectTypes/CButton.cpp +++ b/source/gui/ObjectTypes/CButton.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -73,6 +73,11 @@ CSize2D CButton::GetTextSize() return m_GeneratedTexts[0].GetSize(); } +CSize2D CButton::GetPreferredTextSize() +{ + return CGUIText{m_pGUI, m_Caption, m_Font, 0, m_BufferZone, m_TextAlign, this}.GetSize(); +} + void CButton::HandleMessage(SGUIMessage& Message) { IGUIObject::HandleMessage(Message); diff --git a/source/gui/ObjectTypes/CButton.h b/source/gui/ObjectTypes/CButton.h index 478a9788f4..37ec9ef070 100644 --- a/source/gui/ObjectTypes/CButton.h +++ b/source/gui/ObjectTypes/CButton.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -48,6 +48,8 @@ public: */ CSize2D GetTextSize(); + CSize2D GetPreferredTextSize(); + /** * @see IGUIObject#HandleMessage() */ diff --git a/source/gui/ObjectTypes/CText.cpp b/source/gui/ObjectTypes/CText.cpp index ab2dc029d3..cfb7c073ab 100644 --- a/source/gui/ObjectTypes/CText.cpp +++ b/source/gui/ObjectTypes/CText.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -113,6 +113,11 @@ CSize2D CText::GetTextSize() return m_GeneratedTexts[0].GetSize(); } +CSize2D CText::GetPreferredTextSize() +{ + return CGUIText{m_pGUI, m_Caption, m_Font, 0, m_BufferZone, m_TextAlign, this}.GetSize(); +} + const CStrW& CText::GetTooltipText() const { for (const CGUIText& text : m_GeneratedTexts) diff --git a/source/gui/ObjectTypes/CText.h b/source/gui/ObjectTypes/CText.h index d91ab18745..261369ebd5 100644 --- a/source/gui/ObjectTypes/CText.h +++ b/source/gui/ObjectTypes/CText.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -49,6 +49,8 @@ public: */ CSize2D GetTextSize(); + CSize2D GetPreferredTextSize(); + virtual const CStrW& GetTooltipText() const; protected: /** diff --git a/source/gui/Scripting/JSInterface_GUIProxy.cpp b/source/gui/Scripting/JSInterface_GUIProxy.cpp index a337b253e5..d1d5bb97b6 100644 --- a/source/gui/Scripting/JSInterface_GUIProxy.cpp +++ b/source/gui/Scripting/JSInterface_GUIProxy.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -44,6 +44,7 @@ DECLARE_GUIPROXY(IGUIObject); template<> void JSI_GUIProxy::CreateFunctions(const ScriptRequest& rq, GUIProxyProps* cache) { CreateFunction<&CButton::GetTextSize>(rq, cache, "getTextSize"); + CreateFunction<&CButton::GetPreferredTextSize>(rq, cache, "getPreferredTextSize"); } DECLARE_GUIPROXY(CButton); @@ -51,6 +52,7 @@ DECLARE_GUIPROXY(CButton); template<> void JSI_GUIProxy::CreateFunctions(const ScriptRequest& rq, GUIProxyProps* cache) { CreateFunction<&CText::GetTextSize>(rq, cache, "getTextSize"); + CreateFunction<&CText::GetPreferredTextSize>(rq, cache, "getPreferredTextSize"); } DECLARE_GUIPROXY(CText);