diff options
author | George Hazan <george.hazan@gmail.com> | 2023-08-02 14:11:40 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-08-02 14:11:40 +0300 |
commit | 16dae6bd7df08d11cf9175239fb9b27f88c6f12c (patch) | |
tree | 4a1f2976ff1256ea807108ece5c2df95b8732bf2 /src | |
parent | 3b014e321cb0b4fd9ff761cf145b94f71576fdd8 (diff) |
fixes #2373 (NewStory: не работают фильтры)
Diffstat (limited to 'src')
-rw-r--r-- | src/core/stdmsg/src/msglog.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/chat_log.cpp | 17 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 5 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 5 | ||||
-rw-r--r-- | src/mir_app/src/srmm_base.cpp | 13 | ||||
-rw-r--r-- | src/mir_app/src/srmm_log_hpp.cpp | 2 |
6 files changed, 37 insertions, 7 deletions
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)
|