summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-08-07 13:02:12 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-08-07 13:02:12 +0300
commit13474cea9a306a3bc8ffd24545836b919463c056 (patch)
treee1e31fd79368afa89529eb3ac594fa19840cea81
parent3ac6eea5b042cf04e28060c47369e999fbdf3ad5 (diff)
fixes #1536 (Steam and BuddyPounce menu items appear for all contacts)
-rw-r--r--plugins/BuddyPounce/src/main.cpp35
-rw-r--r--plugins/BuddyPounce/src/version.h2
-rw-r--r--protocols/Steam/src/steam_menus.cpp5
-rw-r--r--protocols/Steam/src/version.h2
4 files changed, 24 insertions, 20 deletions
diff --git a/plugins/BuddyPounce/src/main.cpp b/plugins/BuddyPounce/src/main.cpp
index 53e56be61a..90b28e8e42 100644
--- a/plugins/BuddyPounce/src/main.cpp
+++ b/plugins/BuddyPounce/src/main.cpp
@@ -3,6 +3,8 @@
CMPlugin g_plugin;
MWindowList hWindowList;
+static HGENMENU g_hMenuItem;
+
/////////////////////////////////////////////////////////////////////////////////////////
PLUGININFOEX pluginInfoEx = {
@@ -23,19 +25,6 @@ CMPlugin::CMPlugin() :
{}
/////////////////////////////////////////////////////////////////////////////////////////
-// MainInit
-
-int MainInit(WPARAM, LPARAM)
-{
- CMenuItem mi(&g_plugin);
- SET_UID(mi, 0x719c1596, 0xb0fd, 0x4c74, 0xb7, 0xe4, 0xeb, 0x22, 0xf4, 0x99, 0xd7, 0x68);
- mi.position = 10;
- mi.hIcolibItem = LoadIcon(g_plugin.getInst(), MAKEINTRESOURCE(IDI_POUNCE));
- mi.name.a = LPGEN("&Buddy Pounce");
- mi.pszService = "BuddyPounce/MenuCommand";
- Menu_AddContactMenuItem(&mi);
- return 0;
-}
int MsgAck(WPARAM, LPARAM lParam)
{
@@ -74,6 +63,12 @@ int MsgAck(WPARAM, LPARAM lParam)
return 0;
}
+int PrebuildContactMenu(WPARAM hContact, LPARAM)
+{
+ Menu_ShowItem(g_hMenuItem, (CallProtoService(GetContactProto(hContact), PS_GETCAPS, PFLAGNUM_1) & PF1_IM) != 0);
+ return 0;
+}
+
int BuddyPounceOptInit(WPARAM wParam, LPARAM)
{
OPTIONSDIALOGPAGE odp = {};
@@ -194,8 +189,7 @@ INT_PTR AddToPounce(WPARAM wParam, LPARAM lParam)
MCONTACT hContact = wParam;
wchar_t* message = (wchar_t*)lParam;
DBVARIANT dbv;
- if (!db_get_ws(hContact, MODULENAME, "PounceMsg", &dbv))
- {
+ if (!db_get_ws(hContact, MODULENAME, "PounceMsg", &dbv)) {
wchar_t* newPounce = (wchar_t*)mir_alloc(mir_wstrlen(dbv.pwszVal) + mir_wstrlen(message) + 1);
if (!newPounce) return 1;
mir_wstrcpy(newPounce, dbv.pwszVal);
@@ -213,12 +207,19 @@ INT_PTR AddToPounce(WPARAM wParam, LPARAM lParam)
int CMPlugin::Load()
{
- HookEvent(ME_SYSTEM_MODULESLOADED, MainInit);
+ HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PrebuildContactMenu);
HookEvent(ME_DB_CONTACT_SETTINGCHANGED, UserOnlineSettingChanged);
HookEvent(ME_OPT_INITIALISE, BuddyPounceOptInit);
HookEvent(ME_PROTO_ACK, MsgAck);
- CreateServiceFunction("BuddyPounce/MenuCommand", BuddyPounceMenuCommand);
+ CMenuItem mi(&g_plugin);
+ SET_UID(mi, 0x719c1596, 0xb0fd, 0x4c74, 0xb7, 0xe4, 0xeb, 0x22, 0xf4, 0x99, 0xd7, 0x68);
+ mi.position = 10;
+ mi.hIcolibItem = LoadIcon(g_plugin.getInst(), MAKEINTRESOURCE(IDI_POUNCE));
+ mi.name.a = LPGEN("&Buddy Pounce");
+ mi.pszService = "BuddyPounce/MenuCommand";
+ g_hMenuItem = Menu_AddContactMenuItem(&mi);
+ CreateServiceFunction(mi.pszService, BuddyPounceMenuCommand);
hWindowList = WindowList_Create();
diff --git a/plugins/BuddyPounce/src/version.h b/plugins/BuddyPounce/src/version.h
index a6bd8c6de4..49843db69b 100644
--- a/plugins/BuddyPounce/src/version.h
+++ b/plugins/BuddyPounce/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 3
#define __RELEASE_NUM 2
-#define __BUILD_NUM 2
+#define __BUILD_NUM 3
#include <stdver.h>
diff --git a/protocols/Steam/src/steam_menus.cpp b/protocols/Steam/src/steam_menus.cpp
index 91feead56a..c14b086b83 100644
--- a/protocols/Steam/src/steam_menus.cpp
+++ b/protocols/Steam/src/steam_menus.cpp
@@ -83,6 +83,9 @@ INT_PTR CSteamProto::OpenBlockListCommand(WPARAM, LPARAM)
int CSteamProto::OnPrebuildContactMenu(WPARAM hContact, LPARAM)
{
+ for (auto &it : contactMenuItems)
+ Menu_ShowItem(it, false);
+
if (!hContact)
return 0;
@@ -110,7 +113,7 @@ int CSteamProto::PrebuildContactMenu(WPARAM hContact, LPARAM lParam)
for (int i = 0; i < CMI_MAX; i++)
Menu_ShowItem(CSteamProto::contactMenuItems[i], false);
- CSteamProto* ppro = CMPlugin::getInstance((MCONTACT)hContact);
+ CSteamProto *ppro = CMPlugin::getInstance((MCONTACT)hContact);
return (ppro) ? ppro->OnPrebuildContactMenu(hContact, lParam) : 0;
}
diff --git a/protocols/Steam/src/version.h b/protocols/Steam/src/version.h
index 755837fc20..6e3077a59a 100644
--- a/protocols/Steam/src/version.h
+++ b/protocols/Steam/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 11
#define __RELEASE_NUM 6
-#define __BUILD_NUM 3
+#define __BUILD_NUM 4
#include <stdver.h>