summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2014-01-23 02:10:53 +0100
committerTreeki <treeki@gmail.com>2014-01-23 02:10:53 +0100
commit07e35b82c6d9ba075d42f8b0401d0616fbfc929c (patch)
tree1ea7673f552ecf961134f7a49ed9d2f02f256c8f
parentdba90fe669f7f8d89bc4e722be0c29decc9afde8 (diff)
downloadbounce4-07e35b82c6d9ba075d42f8b0401d0616fbfc929c.tar.gz
bounce4-07e35b82c6d9ba075d42f8b0401d0616fbfc929c.zip
force user to leave channels when disconnected from server
Diffstat (limited to '')
-rw-r--r--core.h2
-rw-r--r--ircserver.cpp3
-rw-r--r--window.cpp8
3 files changed, 13 insertions, 0 deletions
diff --git a/core.h b/core.h
index 7ccc4ee..2696032 100644
--- a/core.h
+++ b/core.h
@@ -98,6 +98,8 @@ public:
void handlePrivmsg(const UserRef &user, const char *str);
char getEffectivePrefixChar(const char *nick) const;
+
+ void disconnected();
};
diff --git a/ircserver.cpp b/ircserver.cpp
index 7e20310..31cbd6d 100644
--- a/ircserver.cpp
+++ b/ircserver.cpp
@@ -73,6 +73,9 @@ void IRCServer::connectedEvent() {
void IRCServer::disconnectedEvent() {
printf("[IRCServer:%p] disconnectedEvent\n", this);
status.pushMessage("Disconnected.");
+
+ for (auto &i : channels)
+ i.second->disconnected();
}
void IRCServer::lineReceivedEvent(char *line, int size) {
printf("[%d] { %s }\n", size, line);
diff --git a/window.cpp b/window.cpp
index f48164c..00e3e22 100644
--- a/window.cpp
+++ b/window.cpp
@@ -356,3 +356,11 @@ char Channel::getEffectivePrefixChar(const char *nick) const {
return 0;
}
+
+
+void Channel::disconnected() {
+ if (inChannel) {
+ inChannel = false;
+ pushMessage("You have been disconnected.");
+ }
+}