diff options
Diffstat (limited to 'plugins/TabSRMM')
-rw-r--r-- | plugins/TabSRMM/src/msgdlgother.cpp | 9 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msglog.cpp | 7 |
2 files changed, 13 insertions, 3 deletions
diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index 7942e378cb..badc8c911f 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -745,6 +745,15 @@ void CMsgDialog::FlashOnClist(MEVENT hEvent, const DBEVENTINFO *dbei) return;
if ((GetForegroundWindow() != m_pContainer->m_hwnd || m_pContainer->m_hwndActive != m_hwnd) && !(dbei->flags & DBEF_SENT) && dbei->eventType == EVENTTYPE_MESSAGE && !m_bFlashClist) {
+ for (int i = 0;; i++) {
+ auto *cle = Clist_GetEvent(m_hContact, i);
+ if (cle == nullptr)
+ break;
+
+ if (!mir_strcmp(cle->pszService, MS_MSG_READMESSAGE))
+ return;
+ }
+
CLISTEVENT cle = {};
cle.hContact = m_hContact;
cle.hDbEvent = hEvent;
diff --git a/plugins/TabSRMM/src/msglog.cpp b/plugins/TabSRMM/src/msglog.cpp index aa049add8b..dca3a53599 100644 --- a/plugins/TabSRMM/src/msglog.cpp +++ b/plugins/TabSRMM/src/msglog.cpp @@ -570,9 +570,10 @@ bool CLogWindow::CreateRtfEvent(RtfLogStreamData *streamData, DB::EventInfo &dbe BOOL isSent = (dbei.flags & DBEF_SENT);
BOOL bIsStatusChangeEvent = IsStatusEvent(dbei.eventType);
- if (!isSent && (bIsStatusChangeEvent || dbei.eventType == EVENTTYPE_MESSAGE || dbei.isSrmm())) {
- db_event_markRead(streamData->hContact, streamData->hDbEvent);
- Clist_RemoveEvent(streamData->hContact, streamData->hDbEvent);
+ if (!isSent && bIsStatusChangeEvent) {
+ if (!dbei.markedRead())
+ db_event_markRead(streamData->hContact, streamData->hDbEvent);
+ Clist_RemoveEvent(-1, streamData->hDbEvent);
}
CMStringW msg(ptrW(DbEvent_GetTextW(&dbei, CP_UTF8)));
|