From 9c89de33df2cd52f19f067dff438547d27a81fe7 Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Sun, 27 Dec 2009 09:48:13 +0000
Subject: Don't join MUCs a second time.

Resolves: #273

diff --git a/Swift/Controllers/ChatsManager.cpp b/Swift/Controllers/ChatsManager.cpp
index e64967c..a805802 100644
--- a/Swift/Controllers/ChatsManager.cpp
+++ b/Swift/Controllers/ChatsManager.cpp
@@ -120,8 +120,14 @@ void ChatsManager::rebindControllerJID(const JID& from, const JID& to) {
 }
 
 void ChatsManager::handleJoinMUCRequest(const JID &muc, const String &nick) {
-	mucControllers_[muc] = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, treeWidgetFactory_, presenceOracle_, avatarManager_);
-	mucControllers_[muc]->setAvailableServerFeatures(serverDiscoInfo_);
+	std::map<JID, MUCController*>::iterator it = mucControllers_.find(muc);
+	if (it != mucControllers_.end()) {
+		//FIXME: What's correct behaviour here?
+	} else {
+		mucControllers_[muc] = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, treeWidgetFactory_, presenceOracle_, avatarManager_);
+		mucControllers_[muc]->setAvailableServerFeatures(serverDiscoInfo_);
+	}
+	mucControllers_[muc]->activateChatWindow();
 }
 
 void ChatsManager::handleIncomingMessage(boost::shared_ptr<Message> message) {
-- 
cgit v0.10.2-6-g49f6