From 4642291e19a5a98d07c067baddf1b5fafbab943a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 12 Oct 2014 22:14:50 +0300 Subject: Fix popup menu for channel chat tab. --- src/gui/widgets/tabs/chat/channeltab.cpp | 24 ++++++++++++++++++++++++ src/gui/widgets/tabs/chat/channeltab.h | 3 +++ src/gui/widgets/tabs/chat/chattab.h | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src/gui/widgets/tabs') 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; -- cgit v1.2.3-60-g2f50