diff options
Diffstat (limited to 'src/gui/windows')
-rw-r--r-- | src/gui/windows/setup.cpp | 22 | ||||
-rw-r--r-- | src/gui/windows/setup.h | 3 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/windows/setup.cpp b/src/gui/windows/setup.cpp index cd6e62882..5ba27f23c 100644 --- a/src/gui/windows/setup.cpp +++ b/src/gui/windows/setup.cpp @@ -59,6 +59,7 @@ Setup::Setup() : Window(_("Setup"), false, nullptr, "setup.xml"), gcn::ActionListener(), mTabs(), + mModsTab(nullptr), mWindowsToReset(), mButtons(), mResetWindows(nullptr), @@ -125,7 +126,6 @@ void Setup::postInit() mTabs.push_back(new Setup_Players(this)); mTabs.push_back(new Setup_Relations(this)); mTabs.push_back(new Setup_Theme(this)); - mTabs.push_back(new Setup_Mods(this)); mTabs.push_back(new Setup_Other(this)); FOR_EACH (std::list<SetupTab*>::const_iterator, i, mTabs) @@ -203,6 +203,9 @@ void Setup::setInGame(const bool inGame) void Setup::externalUpdate() { + mModsTab = new Setup_Mods(this); + mTabs.push_back(mModsTab); + mPanel->addTab(mModsTab->getName(), mModsTab); FOR_EACH (std::list<SetupTab*>::const_iterator, it, mTabs) { if (*it) @@ -210,6 +213,23 @@ void Setup::externalUpdate() } } +void Setup::externalUnload() +{ + FOR_EACH (std::list<SetupTab*>::const_iterator, it, mTabs) + { + if (*it) + (*it)->externalUnloaded(); + } + if (mModsTab) + { + mTabs.remove(mModsTab); + Tab *const tab = mPanel->getTab(mModsTab->getName()); + mPanel->removeTab(tab); + delete mModsTab; + mModsTab = nullptr; + } +} + void Setup::registerWindowForReset(Window *const window) { mWindowsToReset.push_back(window); diff --git a/src/gui/windows/setup.h b/src/gui/windows/setup.h index 1b484b726..9039f4e87 100644 --- a/src/gui/windows/setup.h +++ b/src/gui/windows/setup.h @@ -57,6 +57,8 @@ class Setup final : public Window, public gcn::ActionListener void externalUpdate(); + void externalUnload(); + void registerWindowForReset(Window *const window); void clearWindowsForReset() @@ -72,6 +74,7 @@ class Setup final : public Window, public gcn::ActionListener private: std::list<SetupTab*> mTabs; + SetupTab *mModsTab; std::list<Window*> mWindowsToReset; std::vector<Button*> mButtons; Button *mResetWindows; |