diff options
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r-- | components/chatmessage.cpp | 12 |
1 files changed, 11 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); } |