diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-01-18 20:02:27 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-01-18 20:02:27 +0300 |
commit | fb5d0e7762f692948dddebd3deb38a0bd20de5f2 (patch) | |
tree | afe2c0d8cf75738fd847af37dc166e0c338f7493 /src/gui/windows/setup.cpp | |
parent | 8a5603e487f682f5f67bc2cedae81249aa138f5b (diff) | |
parent | e9e343366fbfbe9a6343089ff113354524f3f306 (diff) | |
download | plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.gz plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.bz2 plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.xz plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.zip |
Merge branch 'master' into stable
Diffstat (limited to 'src/gui/windows/setup.cpp')
-rw-r--r-- | src/gui/windows/setup.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/gui/windows/setup.cpp b/src/gui/windows/setup.cpp index 995e6beac..d0ecc2d6d 100644 --- a/src/gui/windows/setup.cpp +++ b/src/gui/windows/setup.cpp @@ -32,13 +32,14 @@ #include "gui/widgets/tabs/setup_audio.h" #include "gui/widgets/tabs/setup_chat.h" #include "gui/widgets/tabs/setup_colors.h" +#include "gui/widgets/tabs/setup_input.h" #include "gui/widgets/tabs/setup_joystick.h" +#include "gui/widgets/tabs/setup_mods.h" #include "gui/widgets/tabs/setup_other.h" -#include "gui/widgets/tabs/setup_theme.h" -#include "gui/widgets/tabs/setup_input.h" #include "gui/widgets/tabs/setup_perfomance.h" #include "gui/widgets/tabs/setup_players.h" #include "gui/widgets/tabs/setup_relations.h" +#include "gui/widgets/tabs/setup_theme.h" #include "gui/widgets/tabs/setup_touch.h" #include "gui/widgets/tabs/setup_video.h" #include "gui/widgets/tabs/setup_visual.h" @@ -58,6 +59,7 @@ Setup::Setup() : Window(_("Setup"), false, nullptr, "setup.xml"), gcn::ActionListener(), mTabs(), + mModsTab(nullptr), mWindowsToReset(), mButtons(), mResetWindows(nullptr), @@ -201,6 +203,10 @@ void Setup::setInGame(const bool inGame) void Setup::externalUpdate() { + unloadModTab(); + 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) @@ -208,6 +214,28 @@ void Setup::externalUpdate() } } +void Setup::unloadModTab() +{ + if (mModsTab) + { + mTabs.remove(mModsTab); + Tab *const tab = mPanel->getTab(mModsTab->getName()); + mPanel->removeTab(tab); + delete mModsTab; + mModsTab = nullptr; + } +} + +void Setup::externalUnload() +{ + FOR_EACH (std::list<SetupTab*>::const_iterator, it, mTabs) + { + if (*it) + (*it)->externalUnloaded(); + } + unloadModTab(); +} + void Setup::registerWindowForReset(Window *const window) { mWindowsToReset.push_back(window); |