From 9e6d21d95bac5a2fa528c2c8fb92df6d914e2e03 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 14 Jun 2014 21:52:54 +0200 Subject: [PATCH] Clear message boxes in windowmanager cleanup (Fixes #1496) --- apps/openmw/mwgui/messagebox.cpp | 17 +++++++++++++++++ apps/openmw/mwgui/messagebox.hpp | 3 +++ apps/openmw/mwgui/windowmanagerimp.cpp | 1 + 3 files changed, 21 insertions(+) diff --git a/apps/openmw/mwgui/messagebox.cpp b/apps/openmw/mwgui/messagebox.cpp index d73a0e1223..c4b204de72 100644 --- a/apps/openmw/mwgui/messagebox.cpp +++ b/apps/openmw/mwgui/messagebox.cpp @@ -25,6 +25,23 @@ namespace MWGui } } + void MessageBoxManager::clear() + { + delete mInterMessageBoxe; + mInterMessageBoxe = NULL; + + std::vector::iterator it(mMessageBoxes.begin()); + for (; it != mMessageBoxes.end(); ++it) + { + if (*it == mStaticMessageBox) + mStaticMessageBox = NULL; + delete *it; + } + mMessageBoxes.clear(); + + mLastButtonPressed = -1; + } + void MessageBoxManager::onFrame (float frameDuration) { std::vector::iterator it; diff --git a/apps/openmw/mwgui/messagebox.hpp b/apps/openmw/mwgui/messagebox.hpp index caa37008ca..406d98c484 100644 --- a/apps/openmw/mwgui/messagebox.hpp +++ b/apps/openmw/mwgui/messagebox.hpp @@ -30,6 +30,9 @@ namespace MWGui bool createInteractiveMessageBox (const std::string& message, const std::vector& buttons); bool isInteractiveMessageBox (); + /// Remove all message boxes + void clear(); + bool removeMessageBox (MessageBox *msgbox); void setMessageBoxSpeed (int speed); diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index b49bfbfa6f..3f239e0e31 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -1502,6 +1502,7 @@ namespace MWGui { mMap->clear(); mQuickKeysMenu->clear(); + mMessageBoxManager->clear(); mTrainingWindow->resetReference(); mDialogueWindow->resetReference();