From bf6ec88a01fa3d7197a3029d1ee1e746ab9c34fb Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Sun, 25 Jan 2015 19:59:56 +0300
Subject: eathena: fix join built in channel tabs.

---
 src/being/localplayer.cpp      | 3 ++-
 src/gui/windows/chatwindow.cpp | 6 ++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp
index a6636ba77..17ee2d823 100644
--- a/src/being/localplayer.cpp
+++ b/src/being/localplayer.cpp
@@ -48,6 +48,7 @@
 
 #include "input/keyboardconfig.h"
 
+#include "gui/chatconsts.h"
 #include "gui/gui.h"
 #include "gui/popupmanager.h"
 
@@ -408,7 +409,7 @@ void LocalPlayer::setGMLevel(const int level)
         {
             chatWindow->loadGMCommands();
             if (!gmChatTab && config.getBoolValue("enableGmTab"))
-                gmChatTab = new GmTab(chatWindow);
+                chatWindow->addSpecialChannelTab(GM_CHANNEL, false);
         }
     }
 }
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp
index 7c32a6298..4324acca5 100644
--- a/src/gui/windows/chatwindow.cpp
+++ b/src/gui/windows/chatwindow.cpp
@@ -1205,13 +1205,17 @@ ChatTab *ChatWindow::addSpecialChannelTab(const std::string &name,
         {
             tradeChatTab = new TradeTab(chatWindow);
             tradeChatTab->setAllowHighlight(false);
+            chatHandler->joinChannel(tradeChatTab->getChannelName());
         }
         ret = tradeChatTab;
     }
     else if (name == GM_CHANNEL)
     {
         if (!gmChatTab)
+        {
             gmChatTab = new GmTab(chatWindow);
+            chatHandler->joinChannel(gmChatTab->getChannelName());
+        }
         ret = gmChatTab;
     }
     if (switchTo)
@@ -1279,6 +1283,8 @@ void ChatWindow::postConnection()
             return;
         chatHandler->joinChannel(tab->getChannelName());
     }
+    if (langChatTab)
+        chatHandler->joinChannel(langChatTab->getChannelName());
 }
 
 #define changeColor(fun) \
-- 
cgit v1.2.3-70-g09d2