From 7f7e4bcfb406fe76c58a0c5e213ce61e2f739789 Mon Sep 17 00:00:00 2001 From: Nimetu Date: Thu, 12 Nov 2015 23:47:23 +0200 Subject: [PATCH] Correctly save and restore screen resolution from icfg file --- code/ryzom/client/src/interface_v3/interface_manager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index 144b6286f..0a3fe04a8 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -1761,6 +1761,8 @@ bool CInterfaceManager::loadConfig (const string &filename) // *** If saved resolution is different from the current one setuped, must fix positions in _Modes if(lastInGameScreenResLoaded) { + // Temporarily set screen to saved size so that positions are correctly calculated + CWidgetManager::getInstance()->setScreenWH(_LastInGameScreenW, _LastInGameScreenH); // NB: we are typically InGame here (even though the _InGame flag is not yet set) // Use the screen size of the config file. Don't update current UI, just _Modes CWidgetManager::getInstance()->moveAllWindowsToNewScreenSize(ClientCfg.Width, ClientCfg.Height, false); @@ -2018,6 +2020,9 @@ void CInterfaceManager::updateDesktops( uint32 newScreenW, uint32 newScreenH ) CWidgetManager::getInstance()->getNewWindowCoordToNewScreenSize(gcCont.X, gcCont.Y, gcCont.W, gcCont.H ,newScreenW, newScreenH); } } + + _LastInGameScreenW = newScreenW; + _LastInGameScreenH = newScreenH; } class InvalidateTextVisitor : public CInterfaceElementVisitor