From b05abc26fef6128e2327990ff9fb76e5156ca5d7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 26 Jul 2023 13:07:55 +0300 Subject: mechanism of the whole log window redrawing is actual for the RTF-based logs only, so let's move inside CRtfLogWindow --- src/mir_app/src/srmm_log_rtf.cpp | 18 ++++++++++++++++++ src/mir_app/src/srmm_main.cpp | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/srmm_log_rtf.cpp b/src/mir_app/src/srmm_log_rtf.cpp index 6a879a535f..ee76d28bc3 100644 --- a/src/mir_app/src/srmm_log_rtf.cpp +++ b/src/mir_app/src/srmm_log_rtf.cpp @@ -30,14 +30,32 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define EVENTTYPE_STATUSCHANGE 25368 #define EVENTTYPE_ERRMSG 25366 +static int OnRedrawLog(void *pObj, WPARAM hContact, LPARAM) +{ + auto *pLog = (CRtfLogWindow *)pObj; + auto &pDlg = pLog->GetDialog(); + + if (pDlg.m_hContact == hContact) + pDlg.ScheduleRedrawLog(); + else if (auto hParent = db_mc_getMeta(hContact)) + if (pDlg.m_hContact == hParent) + pDlg.ScheduleRedrawLog(); + + return 0; +} + CRtfLogWindow::CRtfLogWindow(CMsgDialog &pDlg) : CSrmmLogWindow(pDlg), m_rtf(*(CCtrlRichEdit*)pDlg.FindControl(IDC_SRMM_LOG)) { + hevEdited = HookEventObj(ME_DB_EVENT_EDITED, OnRedrawLog, this); + hevDelete = HookEventObj(ME_DB_EVENT_DELETED, OnRedrawLog, this); } CRtfLogWindow::~CRtfLogWindow() { + UnhookEvent(hevEdited); + UnhookEvent(hevDelete); } ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/mir_app/src/srmm_main.cpp b/src/mir_app/src/srmm_main.cpp index 9de2c1bdb0..54fe37b369 100644 --- a/src/mir_app/src/srmm_main.cpp +++ b/src/mir_app/src/srmm_main.cpp @@ -51,21 +51,6 @@ static int OnPrebuildContactMenu(WPARAM hContact, LPARAM) return 0; } -///////////////////////////////////////////////////////////////////////////////////////// -// Built-in hook to redraw RTF-based event logs on event's change/deletion - -static int OnRedrawLog(WPARAM hContact, LPARAM) -{ - if (auto *pDlg = Srmm_FindDialog(hContact)) - pDlg->ScheduleRedrawLog(); - - if (db_mc_isSub(hContact)) - if (auto *pDlg = Srmm_FindDialog(db_mc_getMeta(hContact))) - pDlg->ScheduleRedrawLog(); - - return 0; -} - ///////////////////////////////////////////////////////////////////////////////////////// void SrmmModulesLoaded() @@ -104,9 +89,6 @@ int LoadSrmmModule() hHookSrmmEvent = CreateHookableEvent(ME_MSG_WINDOWEVENT); hHookIconsChanged = CreateHookableEvent(ME_MSG_ICONSCHANGED); hHookIconPressedEvt = CreateHookableEvent(ME_MSG_ICONPRESSED); - - HookEvent(ME_DB_EVENT_EDITED, OnRedrawLog); - HookEvent(ME_DB_EVENT_DELETED, OnRedrawLog); return 0; } -- cgit v1.2.3