summaryrefslogtreecommitdiff
path: root/protocols/Discord/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Discord/src')
-rw-r--r--protocols/Discord/src/menus.cpp22
-rw-r--r--protocols/Discord/src/proto.cpp1
2 files changed, 17 insertions, 6 deletions
diff --git a/protocols/Discord/src/menus.cpp b/protocols/Discord/src/menus.cpp
index dca1a3daa6..c50682348f 100644
--- a/protocols/Discord/src/menus.cpp
+++ b/protocols/Discord/src/menus.cpp
@@ -153,6 +153,16 @@ void CDiscordProto::OnBuildProtoMenu()
/////////////////////////////////////////////////////////////////////////////////////////
// Contact menu items
+static std::vector<HGENMENU> g_menuItems;
+
+static int OnPrebuildMenu(WPARAM hContact, LPARAM)
+{
+ auto *ppro = CMPlugin::getInstance(hContact);
+ for (auto &it : g_menuItems)
+ Menu_ShowItem(it, ppro != 0);
+ return 0;
+}
+
void CDiscordProto::InitMenus()
{
CMenuItem mi(&g_plugin);
@@ -162,7 +172,7 @@ void CDiscordProto::InitMenus()
mi.name.a = LPGEN("Leave guild");
mi.position = -200001000;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_CHAT_LEAVE);
- g_hMenuLeaveGuild = Menu_AddContactMenuItem(&mi);
+ g_menuItems.push_back(g_hMenuLeaveGuild = Menu_AddContactMenuItem(&mi));
mi.pszService = MODULENAME "/CreateChannel";
CreateServiceFunction(mi.pszService, GlobalService<&CDiscordProto::OnMenuCreateChannel>);
@@ -170,7 +180,7 @@ void CDiscordProto::InitMenus()
mi.name.a = LPGEN("Create new channel");
mi.position++;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_ADDCONTACT);
- g_hMenuCreateChannel = Menu_AddContactMenuItem(&mi);
+ g_menuItems.push_back(g_hMenuCreateChannel = Menu_AddContactMenuItem(&mi));
SET_UID(mi, 0x6EF11AD6, 0x6111, 0x4E29, 0xBA, 0x8B, 0xA7, 0xB2, 0xE0, 0x22, 0xE1, 0x8E);
CreateServiceFunction(mi.pszService, GlobalService<&CDiscordProto::OnMenuCopyId>);
@@ -178,7 +188,7 @@ void CDiscordProto::InitMenus()
mi.name.a = LPGEN("Copy ID");
mi.position++;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_USERONLINE);
- Menu_AddContactMenuItem(&mi);
+ g_menuItems.push_back(Menu_AddContactMenuItem(&mi));
mi.pszService = MODULENAME "/ToggleSync";
CreateServiceFunction(mi.pszService, GlobalService<&CDiscordProto::OnMenuToggleSync>);
@@ -186,7 +196,7 @@ void CDiscordProto::InitMenus()
mi.name.a = LPGEN("Enable guild sync");
mi.position++;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_CHAT_JOIN);
- g_hMenuToggleSync = Menu_AddContactMenuItem(&mi);
+ g_menuItems.push_back(g_hMenuToggleSync = Menu_AddContactMenuItem(&mi));
mi.pszService = MODULENAME "/DatabaseHistory";
CreateServiceFunction(mi.pszService, GlobalService<&CDiscordProto::OnMenuDatabaseHistory>);
@@ -194,5 +204,7 @@ void CDiscordProto::InitMenus()
mi.name.a = LPGEN("Enable database history for a guild");
mi.position++;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_HISTORY);
- g_hMenuDatabaseHistory = Menu_AddContactMenuItem(&mi);
+ g_menuItems.push_back(g_hMenuDatabaseHistory = Menu_AddContactMenuItem(&mi));
+
+ HookEvent(ME_CLIST_PREBUILDCONTACTMENU, &OnPrebuildMenu);
}
diff --git a/protocols/Discord/src/proto.cpp b/protocols/Discord/src/proto.cpp
index 5544570548..8c10036837 100644
--- a/protocols/Discord/src/proto.cpp
+++ b/protocols/Discord/src/proto.cpp
@@ -149,7 +149,6 @@ void CDiscordProto::OnModulesLoaded()
HookProtoEvent(ME_GC_EVENT, &CDiscordProto::GroupchatEventHook);
HookProtoEvent(ME_GC_BUILDMENU, &CDiscordProto::GroupchatMenuHook);
- InitMenus();
InitVoip(true);
// Voice support