diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/src/chat_svc.cpp | 14 | ||||
-rw-r--r-- | src/mir_app/src/srmm_log_hpp.cpp | 18 |
2 files changed, 23 insertions, 9 deletions
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 64b05b018a..fc6e001881 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -854,6 +854,19 @@ static int OnContactDeleted(WPARAM hContact, LPARAM) return 0;
}
+static int OnEventDeleted(WPARAM hContact, LPARAM hDbEvent)
+{
+ if (Contact::IsGroupChat(hContact))
+ if (auto *si = SM_FindSessionByContact(hContact))
+ for (auto &it : si->arEvents.rev_iter())
+ if (it->hEvent == hDbEvent) {
+ si->arEvents.removeItem(&it);
+ break;
+ }
+
+ return 0;
+}
+
static INT_PTR MuteChat(WPARAM hContact, LPARAM param)
{
Chat_Mute(hContact, param);
@@ -1020,6 +1033,7 @@ int LoadChatModule(void) HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded);
HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown);
HookEvent(ME_DB_CONTACT_DELETED, OnContactDeleted);
+ HookEvent(ME_DB_EVENT_DELETED, OnEventDeleted);
HookEvent(ME_SKIN_ICONSCHANGED, IconsChanged);
HookEvent(ME_FONT_RELOAD, FontsChanged);
diff --git a/src/mir_app/src/srmm_log_hpp.cpp b/src/mir_app/src/srmm_log_hpp.cpp index 7d696d40bb..969200d093 100644 --- a/src/mir_app/src/srmm_log_hpp.cpp +++ b/src/mir_app/src/srmm_log_hpp.cpp @@ -120,19 +120,11 @@ public: IEVIEWEVENTDATA ied = {};
ied.dwFlags = IEEDF_UNICODE_NICK | IEEDF_UNICODE_TEXT;
-
- IEVIEWEVENT event = {};
- event.hwnd = m_hwnd;
- event.hContact = m_pDlg.m_hContact;
- event.codepage = CP_ACP;
- event.iType = IEE_LOG_MEM_EVENTS;
- event.eventData = &ied;
- event.count = 1;
-
ied.szNick.w = lin->ptszNick;
ied.szText.w = lin->ptszText;
ied.time = lin->time;
ied.bIsMe = lin->bIsMe;
+ ied.hEvent = lin->hEvent;
switch (lin->iType) {
case GC_EVENT_MESSAGE:
@@ -176,6 +168,14 @@ public: ied.dwData |= g_Settings->bShowTime ? IEEDD_GC_SHOW_TIME : 0;
ied.dwData |= IEEDD_GC_SHOW_ICON;
ied.dwFlags = IEEDF_UNICODE_TEXT | IEEDF_UNICODE_NICK;
+
+ IEVIEWEVENT event = {};
+ event.hwnd = m_hwnd;
+ event.hContact = m_pDlg.m_hContact;
+ event.codepage = CP_ACP;
+ event.iType = IEE_LOG_MEM_EVENTS;
+ event.eventData = &ied;
+ event.count = 1;
CallService(MS_HPP_EG_EVENT, 0, (LPARAM)&event);
}
|