Fix brief text misalignment in GUI text objects

The issue was introduced by 8a2a450686.
It affected GUI text objects (CText) with `scrollbar` set to true; when
their caption was long enough for a scrollbar to be visible and then the
size changed (got bigger) so that no scrollbar was needed anymore, then
for a single frame the text was completely misaligned. This happened
because in `CText::Draw` the scrollbar wasn't updated yet, so the newly
added `GetScrollBar(0).IsVisible()` check still returned true, even
though it wouldn't end up being rendered anyway -- it was updated in
`IGUITextOwner::DrawText` eventually.

This happened to the tutorial info panel in the starting economy
walkthrough, for example. Note: in that case the scrollbar wasn't ever
drawn, but it was temporarily set visible within a frame by the JS
object resizing logic.
This commit is contained in:
Vantha 2026-05-09 12:48:31 +02:00
parent 1db11c0df4
commit ade830b30c

View file

@ -181,6 +181,9 @@ void CText::Draw(CCanvas2D& canvas)
{
m_pGUI.DrawSprite(m_Sprite, canvas, GetActualSize(), m_VisibleArea);
// Ensure the scrollbars are up-to-date.
UpdateText();
float scroll = 0.f;
if (m_ScrollBar)
scroll = GetScrollBar(0).GetPos();