Fixed: Update text widget parent size when interface scale changes
--HG-- branch : experimental-ui-scaling
This commit is contained in:
parent
34fa04644e
commit
2cb71e654a
2 changed files with 12 additions and 3 deletions
|
@ -614,6 +614,7 @@ namespace NLGUI
|
|||
|
||||
uint32 _ScreenH;
|
||||
uint32 _ScreenW;
|
||||
float _InterfaceScale;
|
||||
|
||||
std::vector< CInterfaceAnim* > activeAnims;
|
||||
|
||||
|
|
|
@ -1850,9 +1850,10 @@ namespace NLGUI
|
|||
class InvalidateTextVisitor : public CInterfaceElementVisitor
|
||||
{
|
||||
public:
|
||||
InvalidateTextVisitor( bool reset )
|
||||
InvalidateTextVisitor( bool reset, bool invalidate )
|
||||
{
|
||||
this->reset = reset;
|
||||
this->invalidate = invalidate;
|
||||
}
|
||||
|
||||
void visitGroup( CInterfaceGroup *group )
|
||||
|
@ -1865,13 +1866,17 @@ namespace NLGUI
|
|||
{
|
||||
if( reset )
|
||||
vt->resetTextIndex();
|
||||
vt->updateTextContext();
|
||||
if( invalidate )
|
||||
vt->invalidateContent();
|
||||
else
|
||||
vt->updateTextContext();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
bool reset;
|
||||
bool invalidate;
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
@ -1884,6 +1889,8 @@ namespace NLGUI
|
|||
CViewRenderer::getInstance()->checkNewScreenSize ();
|
||||
CViewRenderer::getInstance()->getScreenSize (w, h);
|
||||
|
||||
bool scaleChanged = _InterfaceScale != CViewRenderer::getInstance()->getInterfaceScale();
|
||||
|
||||
// Update ui:* (limit the master containers to the height of the screen)
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
|
@ -1902,7 +1909,7 @@ namespace NLGUI
|
|||
{
|
||||
SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
|
||||
InvalidateTextVisitor inv( false );
|
||||
InvalidateTextVisitor inv( false, scaleChanged );
|
||||
|
||||
rMG.Group->visitGroupAndChildren( &inv );
|
||||
rMG.Group->invalidateCoords ();
|
||||
|
@ -3725,6 +3732,7 @@ namespace NLGUI
|
|||
inGame = false;
|
||||
|
||||
setScreenWH(0, 0);
|
||||
_InterfaceScale = 1.0f;
|
||||
|
||||
_GroupSelection = false;
|
||||
multiSelection = false;
|
||||
|
|
Loading…
Reference in a new issue