mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 11:26:37 +00:00 
			
		
		
		
	Fixed inventory crash and skipmenu launch
This commit is contained in:
		
							parent
							
								
									72a16dc78b
								
							
						
					
					
						commit
						c3d49d5ca5
					
				
					 5 changed files with 28 additions and 9 deletions
				
			
		|  | @ -104,6 +104,7 @@ namespace MWBase | |||
|              * new dialogs. | ||||
|              */ | ||||
|             virtual void update() = 0; | ||||
|             virtual void updateVisible() = 0; | ||||
| 
 | ||||
|             /// @note This method will block until the video finishes playing
 | ||||
|             /// (and will continually update the window while doing so)
 | ||||
|  |  | |||
|  | @ -780,7 +780,7 @@ namespace MWGui | |||
|     void MapWindow::setVisible(bool visible) | ||||
|     { | ||||
|         WindowBase::setVisible(visible); | ||||
|         mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->isGuiMode()); | ||||
|         mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_None); | ||||
|     } | ||||
| 
 | ||||
|     void MapWindow::renderGlobalMap() | ||||
|  |  | |||
|  | @ -368,6 +368,8 @@ namespace MWGui | |||
|             mPlayerSkillValues.insert(std::make_pair(ESM::Skill::sSkillIds[i], MWMechanics::SkillValue())); | ||||
|         } | ||||
| 
 | ||||
|         updatePinnedWindows(); | ||||
| 
 | ||||
|         // Set up visibility
 | ||||
|         updateVisible(); | ||||
| 
 | ||||
|  | @ -400,11 +402,6 @@ namespace MWGui | |||
|             allow(GW_ALL); | ||||
| 
 | ||||
|         mRestAllowed = !newgame; | ||||
| 
 | ||||
|         mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows")); | ||||
|         mMap->setPinned(Settings::Manager::getBool("map pin", "Windows")); | ||||
|         mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows")); | ||||
|         mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows")); | ||||
|     } | ||||
| 
 | ||||
|     WindowManager::~WindowManager() | ||||
|  | @ -492,7 +489,6 @@ namespace MWGui | |||
|     void WindowManager::update() | ||||
|     { | ||||
|         cleanupGarbage(); | ||||
| 
 | ||||
|         mHud->update(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -560,6 +556,12 @@ namespace MWGui | |||
|         { | ||||
|             mInventoryWindow->setGuiMode(GM_None); | ||||
| 
 | ||||
|             // If game is not running, we can't be sure that widgets are initialized properly
 | ||||
|             MWBase::StateManager::State state = MWBase::Environment::get().getStateManager()->getState(); | ||||
| 
 | ||||
|             if (state != MWBase::StateManager::State_Running) | ||||
|                 return; | ||||
| 
 | ||||
|             mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map) && (mAllowed & GW_Map)); | ||||
|             mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats) && (mAllowed & GW_Stats)); | ||||
|             mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory) && (mAllowed & GW_Inventory)); | ||||
|  | @ -1709,6 +1711,8 @@ namespace MWGui | |||
|         mCompanionWindow->resetReference(); | ||||
|         mConsole->resetReference(); | ||||
| 
 | ||||
|         mInventoryWindow->rebuildAvatar(); | ||||
| 
 | ||||
|         mSelectedSpell.clear(); | ||||
| 
 | ||||
|         mCustomMarkers.clear(); | ||||
|  | @ -1868,6 +1872,17 @@ namespace MWGui | |||
|             mVideoWidget->stop(); | ||||
|     } | ||||
| 
 | ||||
|     void WindowManager::updatePinnedWindows() | ||||
|     { | ||||
|         mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows")); | ||||
| 
 | ||||
|         mMap->setPinned(Settings::Manager::getBool("map pin", "Windows")); | ||||
| 
 | ||||
|         mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows")); | ||||
| 
 | ||||
|         mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows")); | ||||
|     } | ||||
| 
 | ||||
|     void WindowManager::pinWindow(GuiWindow window) | ||||
|     { | ||||
|         switch (window) | ||||
|  |  | |||
|  | @ -362,6 +362,8 @@ namespace MWGui | |||
| 
 | ||||
|     virtual void pinWindow (MWGui::GuiWindow window); | ||||
| 
 | ||||
|     virtual void updatePinnedWindows (); | ||||
| 
 | ||||
|     /// Fade the screen in, over \a time seconds
 | ||||
|     virtual void fadeScreenIn(const float time, bool clearQueue); | ||||
|     /// Fade the screen out to black, over \a time seconds
 | ||||
|  |  | |||
|  | @ -139,8 +139,7 @@ void MWState::StateManager::newGame (bool bypass) | |||
| { | ||||
|     cleanup(); | ||||
| 
 | ||||
|     if (!bypass) | ||||
|         MWBase::Environment::get().getWindowManager()->setNewGame (true); | ||||
|     MWBase::Environment::get().getWindowManager()->setNewGame (!bypass); | ||||
| 
 | ||||
|     try | ||||
|     { | ||||
|  | @ -149,6 +148,8 @@ void MWState::StateManager::newGame (bool bypass) | |||
|         MWBase::Environment::get().getWorld()->startNewGame (bypass); | ||||
| 
 | ||||
|         mState = State_Running; | ||||
| 
 | ||||
|         MWBase::Environment::get().getWindowManager()->updateVisible(); | ||||
|     } | ||||
|     catch (std::exception& e) | ||||
|     { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue