summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-01-19 18:38:02 +0300
committerAndrei Karas <akaras@inbox.ru>2012-01-19 18:38:02 +0300
commitfaa6c2a26deb18469066a74b2d6c76fdae5931c7 (patch)
treede8392ef2c699f740ba10215bfa640570f02ae15
parentc053634fdbbcc3a9da7cd0eefa7a4c78ee7e1bef (diff)
downloadmanaplus-faa6c2a26deb18469066a74b2d6c76fdae5931c7.tar.gz
manaplus-faa6c2a26deb18469066a74b2d6c76fdae5931c7.tar.bz2
manaplus-faa6c2a26deb18469066a74b2d6c76fdae5931c7.tar.xz
manaplus-faa6c2a26deb18469066a74b2d6c76fdae5931c7.zip
Prevent adding double attributes to status window.
-rw-r--r--src/gui/statuswindow.cpp12
-rw-r--r--src/gui/statuswindow.h2
-rw-r--r--src/gui/widgets/vertcontainer.cpp1
-rw-r--r--src/net/tmwa/generalhandler.cpp3
4 files changed, 17 insertions, 1 deletions
diff --git a/src/gui/statuswindow.cpp b/src/gui/statuswindow.cpp
index b3e3f38f3..20a017a41 100644
--- a/src/gui/statuswindow.cpp
+++ b/src/gui/statuswindow.cpp
@@ -431,10 +431,20 @@ void StatusWindow::addAttribute(int id, const std::string &name,
disp = new DerDisplay(id, name);
mDAttrCont->add(disp);
}
-
mAttrs[id] = disp;
}
+void StatusWindow::clearAttributes()
+{
+ mAttrCont->clear();
+ mDAttrCont->clear();
+ Attrs::iterator it = mAttrs.begin();
+ Attrs::iterator it_end = mAttrs.end();
+ for (; it != it_end; ++ it)
+ delete (*it).second;
+ mAttrs.clear();
+}
+
void StatusWindow::updateHPBar(ProgressBar *bar, bool showMax)
{
if (!bar)
diff --git a/src/gui/statuswindow.h b/src/gui/statuswindow.h
index 87107694f..8e110a354 100644
--- a/src/gui/statuswindow.h
+++ b/src/gui/statuswindow.h
@@ -75,6 +75,8 @@ class StatusWindow : public Window,
void action(const gcn::ActionEvent &event);
+ void clearAttributes();
+
private:
static std::string translateLetter(const char* letters);
diff --git a/src/gui/widgets/vertcontainer.cpp b/src/gui/widgets/vertcontainer.cpp
index 36daf7676..305343d1a 100644
--- a/src/gui/widgets/vertcontainer.cpp
+++ b/src/gui/widgets/vertcontainer.cpp
@@ -69,6 +69,7 @@ void VertContainer::clear()
Container::clear();
mCount = 0;
+ mNextY = 0;
}
void VertContainer::widgetResized(const gcn::Event &event A_UNUSED)
diff --git a/src/net/tmwa/generalhandler.cpp b/src/net/tmwa/generalhandler.cpp
index ea44ec206..09c216ed3 100644
--- a/src/net/tmwa/generalhandler.cpp
+++ b/src/net/tmwa/generalhandler.cpp
@@ -259,6 +259,9 @@ void GeneralHandler::processEvent(Mana::Channels channel,
if (!statusWindow)
return;
+ // protection against double addition attributes.
+ statusWindow->clearAttributes();
+
statusWindow->addAttribute(STR, _("Strength"), true, "");
statusWindow->addAttribute(AGI, _("Agility"), true, "");
statusWindow->addAttribute(VIT, _("Vitality"), true, "");