summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/chatmessage.cpp12
-rw-r--r--components/chatmessage.hpp2
2 files changed, 13 insertions, 1 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp
index c7cf21b..9074e91 100644
--- a/components/chatmessage.cpp
+++ b/components/chatmessage.cpp
@@ -62,6 +62,10 @@ ChatMessageItem::ChatMessageItem() {
m_menu_delete_message->signal_activate().connect(sigc::mem_fun(*this, &ChatMessageItem::on_menu_message_delete));
m_menu.append(*m_menu_delete_message);
+ m_menu_edit_message = Gtk::manage(new Gtk::MenuItem("_Edit Message", true));
+ m_menu_edit_message->signal_activate().connect(sigc::mem_fun(*this, &ChatMessageItem::on_menu_message_edit));
+ m_menu.append(*m_menu_edit_message);
+
m_menu.show_all();
}
@@ -73,6 +77,10 @@ void ChatMessageItem::on_menu_message_delete() {
m_abaddon->ActionChatDeleteMessage(ChannelID, ID);
}
+void ChatMessageItem::on_menu_message_edit() {
+ m_abaddon->ActionChatEditMessage(ChannelID, ID);
+}
+
void ChatMessageItem::on_menu_copy_id() {
Gtk::Clipboard::get()->set_text(std::to_string(ID));
}
@@ -94,7 +102,9 @@ void ChatMessageItem::AttachMenuHandler(Gtk::Widget *widget) {
void ChatMessageItem::ShowMenu(const GdkEvent *event) {
auto &client = m_abaddon->GetDiscordClient();
auto *data = client.GetMessage(ID);
- m_menu_delete_message->set_sensitive(client.GetUserData().ID == data->Author.ID);
+ bool can_manage = client.GetUserData().ID == data->Author.ID;
+ m_menu_delete_message->set_sensitive(can_manage);
+ m_menu_edit_message->set_sensitive(can_manage);
m_menu.popup_at_pointer(event);
}
diff --git a/components/chatmessage.hpp b/components/chatmessage.hpp
index 82f4504..5796002 100644
--- a/components/chatmessage.hpp
+++ b/components/chatmessage.hpp
@@ -43,10 +43,12 @@ protected:
void AttachMenuHandler(Gtk::Widget *widget);
void on_menu_copy_id();
void on_menu_message_delete();
+ void on_menu_message_edit();
Gtk::Menu m_menu;
Gtk::MenuItem *m_menu_copy_id;
Gtk::MenuItem *m_menu_delete_message;
+ Gtk::MenuItem *m_menu_edit_message;
Abaddon *m_abaddon = nullptr;
};