MCPcopy Create free account
hub / github.com/DiscordMessenger/dm / HandleRightClickMenuCommand

Method HandleRightClickMenuCommand

src/windows/MessageList.cpp:3206–3327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3204}
3205
3206void MessageList::HandleRightClickMenuCommand(int command)
3207{
3208 // NOTE!!! If you block for any reason (e.g. using a messagebox/dialog), you need to re-fetch this.
3209 // Otherwise a message may come in the background and delete the message you are using, among loads
3210 // of other things.
3211 MessageItem* pMsg = NULL;
3212 Snowflake rightClickedMessage = m_rightClickedMessage;
3213 Snowflake messageBeforeRightClickedMessage = 0;
3214
3215 for (auto iter = m_messages.rbegin(); iter != m_messages.rend(); ++iter)
3216 {
3217 if (iter->m_msg->m_snowflake == m_rightClickedMessage)
3218 {
3219 pMsg = &(*iter);
3220
3221 ++iter;
3222 if (iter != m_messages.rend())
3223 messageBeforeRightClickedMessage = iter->m_msg->m_snowflake;
3224 break;
3225 }
3226 }
3227
3228 m_rightClickedMessage = 0;
3229
3230 if (!pMsg) return;
3231
3232 switch (command)
3233 {
3234 case ID_DUMMYPOPUP_MARKUNREAD:
3235 {
3236 if (messageBeforeRightClickedMessage == 0) {
3237 uint64_t timeStamp = rightClickedMessage >> 22;
3238 timeStamp--; // in milliseconds since Discord epoch - irrelevant because we just want to take ONE millisecond
3239 messageBeforeRightClickedMessage = timeStamp << 22;
3240 }
3241
3242 assert(messageBeforeRightClickedMessage < rightClickedMessage);
3243
3244 GetDiscordInstance()->RequestAcknowledgeMessages(m_channelID, messageBeforeRightClickedMessage);
3245
3246 // Block acknowledgements until we switch to the channel again.
3247 m_bAcknowledgeNow = false;
3248 break;
3249 }
3250 case ID_DUMMYPOPUP_COPYMESSAGELINK:
3251 {
3252 // Copy the message link.
3253 std::string msgLink = CreateMessageLink(m_guildID, m_channelID, pMsg->m_msg->m_snowflake);
3254 CopyStringToClipboard(msgLink);
3255 break;
3256 }
3257 case ID_DUMMYPOPUP_EDITMESSAGE:
3258 {
3259 SendMessage(g_Hwnd, WM_STARTEDITING, 0, (LPARAM) &rightClickedMessage);
3260 break;
3261 }
3262 case ID_DUMMYPOPUP_COPYTEXT:
3263 {

Callers 1

WndProcMethod · 0.80

Calls 10

GetDiscordInstanceFunction · 0.85
CreateMessageLinkFunction · 0.85
CopyStringToClipboardFunction · 0.85
SpeakFunction · 0.85
RequestDeleteMessageMethod · 0.80
ReverseMentionsMethod · 0.80
to_stringFunction · 0.50
GetCurrentChannelMethod · 0.45

Tested by

no test coverage detected