From 16dae6bd7df08d11cf9175239fb9b27f88c6f12c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 2 Aug 2023 14:11:40 +0300 Subject: =?UTF-8?q?fixes=20#2373=20(NewStory:=20=D0=BD=D0=B5=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82=20=D1=84=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D1=80=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/stdmsg/src/msglog.cpp | 2 +- src/mir_app/src/chat_log.cpp | 17 ++++++++++++++++- src/mir_app/src/mir_app.def | 5 +++++ src/mir_app/src/mir_app64.def | 5 +++++ src/mir_app/src/srmm_base.cpp | 13 +++++++++---- src/mir_app/src/srmm_log_hpp.cpp | 2 +- 6 files changed, 37 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/core/stdmsg/src/msglog.cpp b/src/core/stdmsg/src/msglog.cpp index be2b6aef3a..7daad7b64e 100644 --- a/src/core/stdmsg/src/msglog.cpp +++ b/src/core/stdmsg/src/msglog.cpp @@ -492,7 +492,7 @@ public: ///////////////////////////////////////////////////////////////////////////////////////// - void LogEvents(const LOGINFO *lin) override + void LogChatEvents(const LOGINFO *lin) override { auto *si = m_pDlg.getChat(); bool bRedraw = lin == nullptr; diff --git a/src/mir_app/src/chat_log.cpp b/src/mir_app/src/chat_log.cpp index 91895d3046..5891173849 100644 --- a/src/mir_app/src/chat_log.cpp +++ b/src/mir_app/src/chat_log.cpp @@ -140,7 +140,7 @@ static DWORD CALLBACK ChatLogStreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, L LBL_Next: if (dat->idx < events.getCount()) { auto &lin = events[dat->idx]; - if (si->iType == GCW_SERVER || (si->pDlg->m_iLogFilterFlags & lin.iType) != 0) + if (si->pDlg->IsSuitableEvent(lin)) dat->pLog->CreateChatRtfEvent(dat, lin); dat->idx++; if (dat->buf.IsEmpty()) @@ -419,3 +419,18 @@ void FreeMsgLogBitmaps(void) for (int i = 0; i < _countof(pLogIconBmpBits); i++) mir_free(pLogIconBmpBits[i]); } + +///////////////////////////////////////////////////////////////////////////////////////// + +void CSimpleLogWindow::LogChatEvents(const struct LOGINFO *lin) +{ + if (lin == nullptr) { + for (auto &it : m_pDlg.getChat()->arEvents) + if (m_pDlg.IsSuitableEvent(*it)) + LogChatEvent(*it); + } + else LogChatEvent(*lin); + + if (lin) + ScrollToBottom(); +} diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index e9772a9c25..b0cd5e4020 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -890,3 +890,8 @@ Clist_GroupSaveExpanded @1003 NONAME ?Proto_GetContactInstance@@YGPAUPROTO_INTERFACE@@I@Z @1007 NONAME ?complete@FILE_BLOB@DB@@QAEX_J@Z @1008 NONAME ?setName@FILE_BLOB@DB@@QAEXPB_W@Z @1009 NONAME +??0CSimpleLogWindow@@IAE@AAVCMsgDialog@@@Z @1010 NONAME +??1CSimpleLogWindow@@UAE@XZ @1011 NONAME +??_7CSimpleLogWindow@@6B@ @1012 NONAME +?IsSuitableEvent@CSrmmBaseDialog@@QBE_NABULOGINFO@@@Z @1013 NONAME +?LogChatEvents@CSimpleLogWindow@@EAEXPBULOGINFO@@@Z @1014 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 81ce7fd596..c5cbd85268 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -890,3 +890,8 @@ Clist_GroupSaveExpanded @1003 NONAME ?Proto_GetContactInstance@@YAPEAUPROTO_INTERFACE@@I@Z @1007 NONAME ?complete@FILE_BLOB@DB@@QEAAX_J@Z @1008 NONAME ?setName@FILE_BLOB@DB@@QEAAXPEB_W@Z @1009 NONAME +??0CSimpleLogWindow@@IEAA@AEAVCMsgDialog@@@Z @1010 NONAME +??1CSimpleLogWindow@@UEAA@XZ @1011 NONAME +??_7CSimpleLogWindow@@6B@ @1012 NONAME +?IsSuitableEvent@CSrmmBaseDialog@@QEBA_NAEBULOGINFO@@@Z @1013 NONAME +?LogChatEvents@CSimpleLogWindow@@EEAAXPEBULOGINFO@@@Z @1014 NONAME diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 34f57f0b16..1279950097 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -614,8 +614,8 @@ INT_PTR CSrmmBaseDialog::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) void CSrmmBaseDialog::AddLog(const LOGINFO &lin) { - if (m_si->iType == GCW_SERVER || (m_iLogFilterFlags & lin.iType)) - m_pLog->LogEvents(&lin); + if (IsSuitableEvent(lin)) + m_pLog->LogChatEvents(&lin); } bool CSrmmBaseDialog::AllowTyping() const @@ -628,6 +628,11 @@ void CSrmmBaseDialog::ClearLog() m_pLog->Clear(); } +bool CSrmmBaseDialog::IsSuitableEvent(const LOGINFO &lin) const +{ + return (m_si->iType == GCW_SERVER || (m_iLogFilterFlags & lin.iType)); +} + void CSrmmBaseDialog::UpdateOptions() { MODULEINFO *mi = m_si->pMI; @@ -650,7 +655,7 @@ void CSrmmBaseDialog::RedrawLog() m_si->LastTime = 0; if (m_si->arEvents.getCount()) - m_pLog->LogEvents(nullptr); + m_pLog->LogChatEvents(nullptr); else ClearLog(); } @@ -706,7 +711,7 @@ void CSrmmBaseDialog::UpdateChatLog() } m_si->bHistoryInit = true; - m_pLog->LogEvents(nullptr); + m_pLog->LogChatEvents(nullptr); } void CSrmmBaseDialog::UpdateFilterButton() diff --git a/src/mir_app/src/srmm_log_hpp.cpp b/src/mir_app/src/srmm_log_hpp.cpp index 9a70d495a7..9e9e65a86f 100644 --- a/src/mir_app/src/srmm_log_hpp.cpp +++ b/src/mir_app/src/srmm_log_hpp.cpp @@ -179,7 +179,7 @@ public: CallService(MS_HPP_EG_EVENT, 0, (LPARAM)&event); } - void LogEvents(const LOGINFO *lin) override + void LogChatEvents(const LOGINFO *lin) override { if (lin == nullptr) { for (auto &it : m_pDlg.getChat()->arEvents) -- cgit v1.2.3