From f12de5d0954a0e24852a1a309dffee37b5536970 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 20 Mar 2023 17:38:47 +0300 Subject: fixes #3441 completely --- plugins/TabSRMM/src/chat_tools.cpp | 9 ++++++--- plugins/TabSRMM/src/msgdialog.cpp | 1 + plugins/TabSRMM/src/msgdlgother.cpp | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/TabSRMM/src/chat_tools.cpp b/plugins/TabSRMM/src/chat_tools.cpp index 754f19705b..107d55d855 100644 --- a/plugins/TabSRMM/src/chat_tools.cpp +++ b/plugins/TabSRMM/src/chat_tools.cpp @@ -357,12 +357,15 @@ BOOL DoSoundsFlashPopupTrayStuff(SESSION_INFO *si, GCEVENT *gce, BOOL bHighlight void Chat_SetFilters(SESSION_INFO *si) { + bool bEnabled = db_get_b(si->hContact, CHAT_MODULE, "FilterEnabled") != 0; + uint32_t dwFlags_local = db_get_dw(si->hContact, CHAT_MODULE, "FilterFlags", GC_EVENT_ALL); - uint32_t dwMask = db_get_dw(si->hContact, CHAT_MODULE, "FilterMask", 0); + uint32_t dwMask = (bEnabled) ? db_get_dw(si->hContact, CHAT_MODULE, "FilterMask") : 0; CMsgDialog *pDlg = si->pDlg; if (pDlg) { pDlg->m_iLogFilterFlags = Chat::iFilterFlags; + for (int i = 0; i < 32; i++) { uint32_t dwBit = 1 << i; if (dwMask & dwBit) @@ -371,7 +374,7 @@ void Chat_SetFilters(SESSION_INFO *si) } dwFlags_local = db_get_dw(si->hContact, CHAT_MODULE, "PopupFlags", GC_EVENT_HIGHLIGHT); - dwMask = db_get_dw(si->hContact, CHAT_MODULE, "PopupMask", 0); + dwMask = (bEnabled) ? db_get_dw(si->hContact, CHAT_MODULE, "PopupMask", 0) : 0; si->iPopupFlags = Chat::iPopupFlags; for (int i = 0; i < 32; i++) { @@ -381,7 +384,7 @@ void Chat_SetFilters(SESSION_INFO *si) } dwFlags_local = db_get_dw(si->hContact, CHAT_MODULE, "TrayIconFlags", GC_EVENT_HIGHLIGHT); - dwMask = db_get_dw(si->hContact, CHAT_MODULE, "TrayIconMask", 0); + dwMask = (bEnabled) ? db_get_dw(si->hContact, CHAT_MODULE, "TrayIconMask", 0) : 0; si->iTrayFlags = Chat::iTrayIconFlags; for (int i = 0; i < 32; i++) { diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index acc2e1bd44..0c0e1257be 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -1004,6 +1004,7 @@ void CMsgDialog::onClick_Filter(CCtrlButton *pButton) RedrawLog(); UpdateTitle(); db_set_b(m_si->hContact, CHAT_MODULE, "FilterEnabled", m_bFilterEnabled); + Chat_SetFilters(m_si); } } diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index ff9dac657e..88f6e5d735 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -2021,13 +2021,12 @@ INT_PTR CALLBACK CMsgDialog::FilterWndProc(HWND hwndDlg, UINT uMsg, WPARAM wPara db_set_dw(pDlg->m_hContact, CHAT_MODULE, "TrayIconFlags", iFlags); db_set_dw(pDlg->m_hContact, CHAT_MODULE, "TrayIconMask", dwMask); } - Chat_SetFilters(pDlg->getChat()); if (pDlg->m_bFilterEnabled) { if (pDlg->m_iLogFilterFlags == 0) pDlg->m_btnFilter.Click(); + pDlg->RedrawLog(); - db_set_b(pDlg->m_hContact, CHAT_MODULE, "FilterEnabled", pDlg->m_bFilterEnabled); } } DestroyWindow(hwndDlg); -- cgit v1.2.3