From 00345798a405d4e28f489d01a2dea6afb01a6c18 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 13 Oct 2014 01:48:00 +0300 Subject: Autojoin channels on open channel tab. --- src/gui/windows/chatwindow.cpp | 22 +++++++++++++++++++--- src/gui/windows/chatwindow.h | 5 ++++- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'src/gui/windows') diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp index 357c76911..4abc70561 100644 --- a/src/gui/windows/chatwindow.cpp +++ b/src/gui/windows/chatwindow.cpp @@ -1203,12 +1203,16 @@ ChannelTab *ChatWindow::addChannelTab(const std::string &name, } ChatTab *ChatWindow::addChatTab(const std::string &name, - const bool switchTo) + const bool switchTo, + const bool join) { if (serverFeatures->haveChatChannels() && name.size() > 1 && name[0] == '#') { - return addChannelTab(name, switchTo); + ChatTab *const tab = addChannelTab(name, switchTo); + if (tab && join) + chatHandler->joinChannel(name); + return tab; } else { @@ -1216,6 +1220,17 @@ ChatTab *ChatWindow::addChatTab(const std::string &name, } } +void ChatWindow::postConnection() +{ + FOR_EACH (ChannelMap::const_iterator, iter, mChannels) + { + ChatTab *const tab = iter->second; + if (!tab) + return; + chatHandler->joinChannel(tab->getChannelName()); + } +} + #define changeColor(fun) \ { \ msg = removeColors(msg); \ @@ -1699,10 +1714,11 @@ void ChatWindow::loadState() if (nick.empty()) break; + const int flags = serverConfig.getValue( "chatWhisperFlags" + toString(num), 1); - ChatTab *const tab = addChatTab(nick, false); + ChatTab *const tab = addChatTab(nick, false, false); if (tab) { tab->setAllowHighlight(flags & 1); diff --git a/src/gui/windows/chatwindow.h b/src/gui/windows/chatwindow.h index acecdcaf2..068ec4111 100644 --- a/src/gui/windows/chatwindow.h +++ b/src/gui/windows/chatwindow.h @@ -203,7 +203,8 @@ class ChatWindow final : public Window, const bool switchTo = false) A_WARN_UNUSED; ChatTab *addChatTab(const std::string &name, - const bool switchTo = false) A_WARN_UNUSED; + const bool switchTo, + const bool join) A_WARN_UNUSED; void removeAllWhispers(); @@ -289,6 +290,8 @@ class ChatWindow final : public Window, static void localPetEmote(const std::string &nick, const uint8_t emoteId); + void postConnection(); + #ifdef USE_PROFILER void logicChildren(); #endif -- cgit v1.2.3-70-g09d2