From 2d2fa8dd248ba2e3e22f13533fef4c69bfbc3c2b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 21 Mar 2025 14:31:09 +0300 Subject: =?UTF-8?q?fixes=20#4863=20(NewStory:=20=D0=BE=D1=82=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D1=8B=20=D0=BF=D0=BE-=D1=80=D0=B0=D0=B7=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=D1=83=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D0=B2=20=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=D1=81=D0=B0=D1=85=20=D0=B8=20=D0=B2=20=D0=B8=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/TabSRMM/src/globals.cpp | 6 +++--- plugins/TabSRMM/src/msgdlgother.cpp | 39 +++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 24 deletions(-) (limited to 'plugins/TabSRMM/src') diff --git a/plugins/TabSRMM/src/globals.cpp b/plugins/TabSRMM/src/globals.cpp index f46d7b6fdd..a6ab43374d 100644 --- a/plugins/TabSRMM/src/globals.cpp +++ b/plugins/TabSRMM/src/globals.cpp @@ -442,7 +442,7 @@ struct MSavedEvent void CGlobals::RestoreUnreadMessageAlerts(void) { - OBJLIST arEvents(10, NumericKeySortT); + OBJLIST events(10, NumericKeySortT); for (auto &hContact : Contacts()) { if (Proto_GetBaseAccountName(hContact) == nullptr) @@ -459,12 +459,12 @@ void CGlobals::RestoreUnreadMessageAlerts(void) if (!dbei.markedRead() && dbei.isAlertable()) if (!Srmm_FindWindow(hContact)) - arEvents.insert(new MSavedEvent(hContact, hDbEvent)); + events.insert(new MSavedEvent(hContact, hDbEvent)); } } } - for (auto &e : arEvents) + for (auto &e : events) Srmm_AddEvent(e->hContact, e->hEvent); } diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index 1bf3dde416..56cdf162d7 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -401,35 +401,31 @@ void CMsgDialog::EventAdded(MEVENT hDbEvent, const DB::EventInfo &dbei) bool CMsgDialog::GetFirstEvent() { int historyMode = g_plugin.getByte(m_hContact, "LoadHistory", Srmm::iHistoryMode); - - m_hDbEventFirst = db_event_firstUnread(m_hContact); - if (m_bActualHistory) historyMode = LOADHISTORY_COUNT; DB::EventInfo dbei; - DB::ECPTR pCursor(DB::EventsRev(m_hContact, m_hDbEventFirst)); switch (historyMode) { - case LOADHISTORY_COUNT: - int i; - - // ability to load only current session's history - if (m_bActualHistory) - i = m_cache->getSessionMsgCount(); - else - i = g_plugin.getWord(SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT); + case LOADHISTORY_UNREAD: + m_hDbEventFirst = db_event_firstUnread(m_hContact); + break; - for (; i > 0; i--) { - MEVENT hPrevEvent = pCursor.FetchNext(); - if (hPrevEvent == 0) - break; + case LOADHISTORY_COUNT: + { + DB::ECPTR pCursor(DB::EventsRev(m_hContact)); + int n = (m_bActualHistory) ? m_cache->getSessionMsgCount() : g_plugin.getWord(SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT); + while (n > 0) { + MEVENT hPrevEvent = pCursor.FetchNext(); + if (hPrevEvent == 0) + break; - dbei.cbBlob = 0; - m_hDbEventFirst = hPrevEvent; - db_event_get(m_hDbEventFirst, &dbei); - if (!DbEventIsShown(dbei)) - i++; + dbei.cbBlob = 0; + m_hDbEventFirst = hPrevEvent; + db_event_get(m_hDbEventFirst, &dbei); + if (DbEventIsShown(dbei)) + n--; + } } break; @@ -441,6 +437,7 @@ bool CMsgDialog::GetFirstEvent() uint32_t firstTime = dbei.getUnixtime() - 60 * g_plugin.getWord(SRMSGSET_LOADTIME, SRMSGDEFSET_LOADTIME); + DB::ECPTR pCursor(DB::EventsRev(m_hContact)); while (MEVENT hPrevEvent = pCursor.FetchNext()) { dbei.cbBlob = 0; db_event_get(hPrevEvent, &dbei); -- cgit v1.2.3