From 978b44865b77eb0029e6033dcbfc0876954cef2e Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Fri, 7 Apr 2017 15:32:08 +0300
Subject: SRMM events are now created inside the core to avoid problems with
 dynamic plugin unload

---
 src/mir_app/src/chat.h         | 1 +
 src/mir_app/src/chat_svc.cpp   | 7 +++++--
 src/mir_app/src/chat_tools.cpp | 4 ++--
 3 files changed, 8 insertions(+), 4 deletions(-)

(limited to 'src/mir_app')

diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h
index fca1458400..cfc262e3eb 100644
--- a/src/mir_app/src/chat.h
+++ b/src/mir_app/src/chat.h
@@ -43,6 +43,7 @@ extern HCURSOR g_hCurHyperlinkHand;
 extern char* pLogIconBmpBits[14];
 extern LIST<SESSION_INFO> g_arSessions;
 extern MWindowList g_hWindowList;
+extern HANDLE hevSendEvent, hevBuildMenuEvent;
 
 // log.c
 void     LoadMsgLogBitmaps(void);
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp
index da3deabc4a..99ab00f793 100644
--- a/src/mir_app/src/chat_svc.cpp
+++ b/src/mir_app/src/chat_svc.cpp
@@ -781,9 +781,12 @@ int LoadChatModule(void)
 	HookEvent(ME_SKIN_ICONSCHANGED, IconsChanged);
 
 	g_hWindowList = WindowList_Create();
-	chatApi.hSendEvent = CreateHookableEvent(ME_GC_EVENT);
-	chatApi.hBuildMenuEvent = CreateHookableEvent(ME_GC_BUILDMENU);
 	hHookEvent = CreateHookableEvent(ME_GC_HOOK_EVENT);
+	hevSendEvent = CreateHookableEvent(ME_GC_EVENT);
+	hevBuildMenuEvent = CreateHookableEvent(ME_GC_BUILDMENU);
+	
+	chatApi.hevPreCreate = CreateHookableEvent(ME_MSG_PRECREATEEVENT);
+	chatApi.hevWinPopup = CreateHookableEvent(ME_MSG_WINDOWPOPUP);
 
 	HookEvent(ME_FONT_RELOAD, FontsChanged);
 	HookEvent(ME_SKIN2_ICONSCHANGED, IconsChanged);
diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp
index 2e03698412..2b0ccdde6b 100644
--- a/src/mir_app/src/chat_tools.cpp
+++ b/src/mir_app/src/chat_tools.cpp
@@ -622,7 +622,7 @@ MIR_APP_DLL(BOOL) Chat_DoEventHook(SESSION_INFO *si, int iType, const USERINFO *
 	gch.ptszText = (LPTSTR)pszText;
 	gch.dwData = dwItem;
 	gch.pDest = &gcd;
-	NotifyEventHooks(chatApi.hSendEvent, 0, (WPARAM)&gch);
+	NotifyEventHooks(hevSendEvent, 0, (WPARAM)&gch);
 	return TRUE;
 }
 
@@ -821,7 +821,7 @@ MIR_APP_DLL(UINT) Chat_CreateGCMenu(HWND hwnd, HMENU hMenu, POINT pt, SESSION_IN
 		gcmi.Type = MENU_ON_NICKLIST;
 	}
 
-	NotifyEventHooks(chatApi.hBuildMenuEvent, 0, (WPARAM)&gcmi);
+	NotifyEventHooks(hevBuildMenuEvent, 0, (WPARAM)&gcmi);
 
 	return TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, nullptr);
 }
-- 
cgit v1.2.3