diff options
author | George Hazan <george.hazan@gmail.com> | 2025-04-10 18:59:12 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2025-04-10 18:59:12 +0300 |
commit | 7028b158bc798dffcb7b5ca0eaa4bc0ff77ed76a (patch) | |
tree | ce01b180b2a15d2a05f256712803a0081315c954 /protocols/Discord/src | |
parent | 24f1172138e3ddfc50cb79c5eea488af3c834a72 (diff) |
various quirks
Diffstat (limited to 'protocols/Discord/src')
-rw-r--r-- | protocols/Discord/src/menus.cpp | 22 | ||||
-rw-r--r-- | protocols/Discord/src/proto.cpp | 1 |
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
|