summaryrefslogtreecommitdiff
path: root/src/gui/windows
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-02-03 21:23:24 +0300
committerAndrei Karas <akaras@inbox.ru>2014-02-03 21:23:24 +0300
commit808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e (patch)
tree208f3224627dea587f8f87b31459e721153e83ba /src/gui/windows
parentd0db8d81ebf49b0e3c9872152cb5749f701cb9d6 (diff)
downloadmv-808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e.tar.gz
mv-808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e.tar.bz2
mv-808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e.tar.xz
mv-808a0b7aeb9c58724d3ac2e1a8bb8f3d3c2bdb1e.zip
fix friend tab update in social window if friends was changed.
Diffstat (limited to 'src/gui/windows')
-rw-r--r--src/gui/windows/socialwindow.cpp14
-rw-r--r--src/gui/windows/socialwindow.h10
2 files changed, 23 insertions, 1 deletions
diff --git a/src/gui/windows/socialwindow.cpp b/src/gui/windows/socialwindow.cpp
index 8b1d0d79c..ec7fce182 100644
--- a/src/gui/windows/socialwindow.cpp
+++ b/src/gui/windows/socialwindow.cpp
@@ -1276,6 +1276,7 @@ SocialWindow::SocialWindow() :
// TRANSLATORS: social window name
Window(_("Social"), false, nullptr, "social.xml"),
gcn::ActionListener(),
+ PlayerRelationsListener(),
mGuildInvited(0),
mGuildAcceptDialog(nullptr),
mGuildCreateDialog(nullptr),
@@ -1372,10 +1373,12 @@ void SocialWindow::postInit()
enableVisibleSound(true);
updateButtons();
+ player_relations.addListener(this);
}
SocialWindow::~SocialWindow()
{
+ player_relations.removeListener(this);
if (mGuildAcceptDialog)
{
mGuildAcceptDialog->close();
@@ -1740,6 +1743,7 @@ void SocialWindow::slowLogic()
const unsigned int nowTime = cur_time;
if (mNeedUpdate && nowTime - mLastUpdateTime > 1)
{
+ logger->log("soc update");
mPlayers->updateList();
mFriends->updateList();
mNeedUpdate = false;
@@ -1892,6 +1896,16 @@ void SocialWindow::updateGuildCounter(const int online, const int total)
}
}
+void SocialWindow::updatedPlayer(const std::string &name)
+{
+ mNeedUpdate = true;
+}
+
+void SocialWindow::updateAll()
+{
+ mNeedUpdate = true;
+}
+
#ifdef USE_PROFILER
void SocialWindow::logicChildren()
{
diff --git a/src/gui/windows/socialwindow.h b/src/gui/windows/socialwindow.h
index 018b5f32c..e8dc44043 100644
--- a/src/gui/windows/socialwindow.h
+++ b/src/gui/windows/socialwindow.h
@@ -24,6 +24,8 @@
#include "gui/widgets/window.h"
+#include "being/playerrelationslistener.h"
+
#include <guichan/actionlistener.hpp>
#include <string>
@@ -45,7 +47,9 @@ class TextDialog;
*
* \ingroup Interface
*/
-class SocialWindow final : public Window, private gcn::ActionListener
+class SocialWindow final : public Window,
+ private gcn::ActionListener,
+ public PlayerRelationsListener
{
public:
SocialWindow();
@@ -125,6 +129,10 @@ public:
void updateGuildCounter(const int online = 0, const int total = 0);
+ void updatedPlayer(const std::string &name);
+
+ void updateAll();
+
#ifdef USE_PROFILER
void logicChildren();
#endif