summaryrefslogtreecommitdiff
path: root/src/gui/windows
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-10-13 01:48:00 +0300
committerAndrei Karas <akaras@inbox.ru>2014-10-13 14:43:43 +0300
commit00345798a405d4e28f489d01a2dea6afb01a6c18 (patch)
tree812a27fa935e41602b4bbbea059b762e77e7388b /src/gui/windows
parent9ee88d0b1068599f60710a13551257f044722a9d (diff)
downloadmv-00345798a405d4e28f489d01a2dea6afb01a6c18.tar.gz
mv-00345798a405d4e28f489d01a2dea6afb01a6c18.tar.bz2
mv-00345798a405d4e28f489d01a2dea6afb01a6c18.tar.xz
mv-00345798a405d4e28f489d01a2dea6afb01a6c18.zip
Autojoin channels on open channel tab.
Diffstat (limited to 'src/gui/windows')
-rw-r--r--src/gui/windows/chatwindow.cpp22
-rw-r--r--src/gui/windows/chatwindow.h5
2 files changed, 23 insertions, 4 deletions
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