diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/src/mir_app.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/srmm_main.cpp | 27 | ||||
-rw-r--r-- | src/mir_core/src/db.cpp | 6 |
4 files changed, 33 insertions, 2 deletions
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 0aa5b1fe10..1f7e1d1728 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -990,3 +990,4 @@ _Proto_CanDeleteHistory@8 @1124 NONAME ?isCustom@EventInfo@DB@@QBE_NH@Z @1128 NONAME
?InsertBbcodeString@CSrmmBaseDialog@@IAEXPB_W@Z @1129 NONAME
?markRead@SESSION_INFO@@QAEX_N@Z @1130 NONAME
+?Srmm_NotifyRemoteRead@@YGXII@Z @1131 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index a5f99bcaf3..ef42406121 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -990,3 +990,4 @@ Proto_CanDeleteHistory @1118 NONAME ?isCustom@EventInfo@DB@@QEBA_NH@Z @1122 NONAME
?InsertBbcodeString@CSrmmBaseDialog@@IEAAXPEB_W@Z @1123 NONAME
?markRead@SESSION_INFO@@QEAAX_N@Z @1124 NONAME
+?Srmm_NotifyRemoteRead@@YAXII@Z @1125 NONAME
diff --git a/src/mir_app/src/srmm_main.cpp b/src/mir_app/src/srmm_main.cpp index 7b07a9c790..b8c0a4cc3c 100644 --- a/src/mir_app/src/srmm_main.cpp +++ b/src/mir_app/src/srmm_main.cpp @@ -19,6 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "stdafx.h" #include "chat.h" +#include <m_NewStory.h> +#include <m_messagestate.h> + HCURSOR g_hCurHyperlinkHand; HANDLE hHookIconsChanged, hHookIconPressedEvt, hHookSrmmEvent; @@ -28,6 +31,19 @@ void LoadSrmmToolbarModule(); void UnloadSrmmToolbarModule(); ///////////////////////////////////////////////////////////////////////////////////////// + +static bool g_bHasMessageState, g_bHasNewStory; + +MIR_APP_DLL(void) Srmm_NotifyRemoteRead(MCONTACT hContact, MEVENT hEvent) +{ + if (g_bHasMessageState) + CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ); + + if (g_bHasNewStory) + NS_NotifyRemoteRead(hContact, hEvent); +} + +///////////////////////////////////////////////////////////////////////////////////////// // Empty history service for main menu class CEmptyHistoryDlg : public CDlgBase @@ -125,8 +141,19 @@ static int OnPrebuildContactMenu(WPARAM hContact, LPARAM) ///////////////////////////////////////////////////////////////////////////////////////// +static int OnModuleLoaded(WPARAM, LPARAM) +{ + g_bHasMessageState = ServiceExists(MS_MESSAGESTATE_UPDATE); + g_bHasNewStory = ServiceExists("NewStory/FileReady"); + return 0; +} + void SrmmModulesLoaded() { + HookEvent(ME_SYSTEM_MODULELOAD, OnModuleLoaded); + HookEvent(ME_SYSTEM_MODULEUNLOAD, OnModuleLoaded); + OnModuleLoaded(0, 0); + // menu item CMenuItem mi(&g_plugin); SET_UID(mi, 0x0d4306aa, 0xe31e, 0x46ee, 0x89, 0x88, 0x3a, 0x2e, 0x05, 0xa6, 0xf3, 0xbc); diff --git a/src/mir_core/src/db.cpp b/src/mir_core/src/db.cpp index 9527537a4d..b80528320a 100644 --- a/src/mir_core/src/db.cpp +++ b/src/mir_core/src/db.cpp @@ -487,8 +487,10 @@ MIR_CORE_DLL(int) db_event_markRead(MCONTACT hContact, MEVENT hDbEvent, bool bFr return 1;
// we received remote mark read command
- if (bFromServer)
- CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ);
+ if (bFromServer) {
+ MIR_APP_DLL(void) Srmm_NotifyRemoteRead(MCONTACT hContact, MEVENT hEvent);
+ Srmm_NotifyRemoteRead(hContact, hDbEvent);
+ }
if (!g_pCurrDb->MarkEventRead(hContact, hDbEvent))
return 1;
|