diff options
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/tabs/chat/channeltab.cpp | 24 | ||||
-rw-r--r-- | src/gui/widgets/tabs/chat/channeltab.h | 3 | ||||
-rw-r--r-- | src/gui/widgets/tabs/chat/chattab.h | 2 |
3 files changed, 28 insertions, 1 deletions
diff --git a/src/gui/widgets/tabs/chat/channeltab.cpp b/src/gui/widgets/tabs/chat/channeltab.cpp index f4b26f4bc..43ba86acf 100644 --- a/src/gui/widgets/tabs/chat/channeltab.cpp +++ b/src/gui/widgets/tabs/chat/channeltab.cpp @@ -25,6 +25,8 @@ #include "chatlogger.h" #include "configuration.h" +#include "gui/widgets/windowcontainer.h" + #include "gui/windows/chatwindow.h" #include "net/chathandler.h" @@ -40,6 +42,8 @@ ChannelTab::ChannelTab(const Widget2 *const widget, ChannelTab::~ChannelTab() { + if (chatWindow) + chatWindow->removeChannel(mChannelName); } void ChannelTab::handleInput(const std::string &msg) @@ -48,3 +52,23 @@ void ChannelTab::handleInput(const std::string &msg) newMsg = ChatWindow::doReplace(msg); chatHandler->privateMessage(mChannelName, newMsg); } + +bool ChannelTab::handleCommand(const std::string &restrict type, + const std::string &restrict args A_UNUSED) +{ + if (type == "close") + { + if (windowContainer) + windowContainer->scheduleDelete(this); + else + delete this; + if (chatWindow) + chatWindow->defaultTab(); + } + else + { + return false; + } + + return true; +} diff --git a/src/gui/widgets/tabs/chat/channeltab.h b/src/gui/widgets/tabs/chat/channeltab.h index 4ca3d9379..33ed49987 100644 --- a/src/gui/widgets/tabs/chat/channeltab.h +++ b/src/gui/widgets/tabs/chat/channeltab.h @@ -41,6 +41,9 @@ class ChannelTab final : public ChatTab protected: void handleInput(const std::string &msg) override final; + + bool handleCommand(const std::string &restrict type, + const std::string &restrict args) override final; }; #endif // GUI_WIDGETS_TABS_CHAT_CHANNELTAB_H diff --git a/src/gui/widgets/tabs/chat/chattab.h b/src/gui/widgets/tabs/chat/chattab.h index 41a02030e..f60a5bc85 100644 --- a/src/gui/widgets/tabs/chat/chattab.h +++ b/src/gui/widgets/tabs/chat/chattab.h @@ -134,7 +134,7 @@ class ChatTab notfinal : public Tab /** * Returns type of the being. */ - int getType() const A_WARN_UNUSED + ChatTabType::Type getType() const A_WARN_UNUSED { return mType; } void saveToLogFile(std::string msg) const; |