diff options
author | George Hazan <ghazan@miranda.im> | 2023-04-19 19:14:25 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-04-19 19:14:25 +0300 |
commit | 617cc8e1277692d32197163a7a377aba4a8f2805 (patch) | |
tree | e95e95f6151610fb7e486522fcc8bf3d1d84566b /src | |
parent | b72af00b956bd3ec2c2b8593cd1171d7c95668ae (diff) |
fixes #3483 (History++: невозможно удалить из базы сообщение групчата)
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);
}
|