summaryrefslogtreecommitdiff
path: root/src/gui/windows/setup.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-01-18 20:02:27 +0300
committerAndrei Karas <akaras@inbox.ru>2014-01-18 20:02:27 +0300
commitfb5d0e7762f692948dddebd3deb38a0bd20de5f2 (patch)
treeafe2c0d8cf75738fd847af37dc166e0c338f7493 /src/gui/windows/setup.cpp
parent8a5603e487f682f5f67bc2cedae81249aa138f5b (diff)
parente9e343366fbfbe9a6343089ff113354524f3f306 (diff)
downloadplus-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.cpp32
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);