diff options
author | George Hazan <george.hazan@gmail.com> | 2023-12-20 20:01:29 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-12-20 20:01:29 +0300 |
commit | 78cf4cb0dc9e9ec06a7a7fd12a77e8fdf229644d (patch) | |
tree | e73976ad77ea32fcf9022bafe6d4b81c9e9a32db | |
parent | 14457811ab95419fd256d4fefd02d61a47603b7a (diff) |
code cleaning
-rw-r--r-- | plugins/NewStory/src/history_array.cpp | 34 | ||||
-rw-r--r-- | plugins/NewStory/src/history_array.h | 13 | ||||
-rw-r--r-- | plugins/NewStory/src/history_control.cpp | 8 |
3 files changed, 28 insertions, 27 deletions
diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index cc7c5b0900..3050e5af52 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -94,7 +94,7 @@ static bool isEqual(const ItemData *p1, const ItemData *p2) return true; } -ItemData* ItemData::checkPrev(ItemData *pPrev) +ItemData* ItemData::checkPrev(ItemData *pPrev, HWND hwnd) { m_grouping = GROUPING_NONE; if (!pPrev || !g_plugin.bMsgGrouping) @@ -111,7 +111,7 @@ ItemData* ItemData::checkPrev(ItemData *pPrev) if (pPrev->m_grouping == GROUPING_NONE) { pPrev->m_grouping = GROUPING_HEAD; if (pPrev->m_bLoaded) - pPrev->setText(); + pPrev->setText(hwnd); } m_grouping = GROUPING_ITEM; } @@ -120,7 +120,7 @@ ItemData* ItemData::checkPrev(ItemData *pPrev) ///////////////////////////////////////////////////////////////////////////////////////// -ItemData* ItemData::checkNext(ItemData *pPrev) +ItemData* ItemData::checkNext(ItemData *pPrev, HWND hwnd) { m_grouping = GROUPING_NONE; if (!pPrev || !g_plugin.bMsgGrouping) @@ -138,11 +138,11 @@ ItemData* ItemData::checkNext(ItemData *pPrev) if (pPrev->m_grouping == GROUPING_NONE) { pPrev->m_grouping = GROUPING_HEAD; if (pPrev->m_bLoaded) - pPrev->setText(); + pPrev->setText(hwnd); } m_grouping = GROUPING_ITEM; if (m_bLoaded) - setText(); + setText(hwnd); } return this; } @@ -165,7 +165,7 @@ static bool isEqualGC(const ItemData *p1, const ItemData *p2) return true; } -ItemData* ItemData::checkPrevGC(ItemData *pPrev) +ItemData* ItemData::checkPrevGC(ItemData *pPrev, HWND hwnd) { m_grouping = GROUPING_NONE; if (!pPrev || !g_plugin.bMsgGrouping) @@ -178,7 +178,7 @@ ItemData* ItemData::checkPrevGC(ItemData *pPrev) if (pPrev->m_grouping == GROUPING_NONE) { pPrev->m_grouping = GROUPING_HEAD; if (pPrev->m_bLoaded) - pPrev->setText(); + pPrev->setText(hwnd); } m_grouping = GROUPING_ITEM; } @@ -190,7 +190,7 @@ ItemData* ItemData::checkPrevGC(ItemData *pPrev) void ItemData::checkCreate(HWND hwnd) { if (data == nullptr) { - setTextAndHwnd(hwnd); + setText(hwnd); MTextSetParent(data, hwnd); MTextActivate(data, true); } @@ -476,15 +476,11 @@ void ItemData::markRead() } } -void ItemData::setText() +void ItemData::setText(HWND hwnd) { - data = MTextCreateEx(htuLog, formatRtf().GetBuffer(), MTEXT_FLG_RTF); - MTextSetProto(data, hContact); - savedHeight = -1; -} + if (data) + MTextDestroy(data); -void ItemData::setTextAndHwnd(HWND hwnd) -{ data = MTextCreateEx2(hwnd, htuLog, formatRtf().GetBuffer(), MTEXT_FLG_RTF); MTextSetProto(data, hContact); savedHeight = -1; @@ -569,7 +565,7 @@ void HistoryArray::addChatEvent(SESSION_INFO *si, const LOGINFO *lin) p.wszNick = mir_wstrdup(lin->ptszNick); strings.insert(p.wszNick); } - p.checkPrevGC((numItems == 0) ? nullptr : get(numItems - 1)); + p.checkPrevGC((numItems == 0) ? nullptr : get(numItems - 1), hwndOwner); } } @@ -585,7 +581,7 @@ bool HistoryArray::addEvent(MCONTACT hContact, MEVENT hEvent, int count) auto &p = allocateItem(); p.hContact = hContact; p.hEvent = hEvent; - pPrev = p.checkPrev(pPrev); + pPrev = p.checkPrev(pPrev, hwndOwner); } else { DB::ECPTR pCursor(DB::Events(hContact, hEvent)); @@ -597,7 +593,7 @@ bool HistoryArray::addEvent(MCONTACT hContact, MEVENT hEvent, int count) auto &p = allocateItem(); p.hContact = hContact; p.hEvent = hEvent; - pPrev = p.checkPrev(pPrev); + pPrev = p.checkPrev(pPrev, hwndOwner); } } @@ -614,7 +610,7 @@ void HistoryArray::addResults(const OBJLIST<SearchResult> &pArray) p.hContact = it->hContact; p.hEvent = it->hEvent; p.m_bIsResult = true; - pPrev = p.checkPrev(pPrev); + pPrev = p.checkPrev(pPrev, hwndOwner); } } diff --git a/plugins/NewStory/src/history_array.h b/plugins/NewStory/src/history_array.h index 00b312172d..37aca66fb3 100644 --- a/plugins/NewStory/src/history_array.h +++ b/plugins/NewStory/src/history_array.h @@ -34,13 +34,12 @@ struct ItemData ItemData(); ~ItemData(); - ItemData* checkNext(ItemData *pPrev); - ItemData* checkPrev(ItemData *pPrev); - ItemData* checkPrevGC(ItemData *pPrev); + ItemData* checkNext(ItemData *pPrev, HWND hwnd); + ItemData* checkPrev(ItemData *pPrev, HWND hwnd); + ItemData* checkPrevGC(ItemData *pPrev, HWND hwnd); void checkCreate(HWND hwnd); void markRead(); - void setText(); - void setTextAndHwnd(HWND hwnd); + void setText(HWND hwnd); bool fetch(void); void fill(int tmpl); @@ -132,6 +131,7 @@ class HistoryArray LIST<wchar_t> strings; OBJLIST<ItemBlock> pages; int iLastPageCounter = 0; + MWindow hwndOwner = 0; ItemData& allocateItem(void); @@ -152,6 +152,9 @@ public: clear(); pages.insert(new ItemBlock()); } + void setOwner(MWindow hwnd) { + hwndOwner = hwnd; + } ItemData* get(int id, bool bLoad = false, bool bBack = false) const; ItemData* insert(int idx); diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index d8c6c4d213..c9aa4509a6 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -59,6 +59,8 @@ NewstoryListData::NewstoryListData(HWND _1) : m_hwnd(_1), redrawTimer(Miranda_GetSystemWindow(), (LPARAM)this) { + items.setOwner(_1); + bSortAscending = g_plugin.bSortAscending; redrawTimer.OnEvent = Callback(this, &NewstoryListData::OnTimer); @@ -831,7 +833,7 @@ void NewstoryListData::ToggleBookmark() p->dbe.flags |= DBEF_BOOKMARK; db_event_edit(p->hEvent, &p->dbe); - p->setText(); + p->setText(m_hwnd); } InvalidateRect(m_hwnd, 0, FALSE); @@ -877,7 +879,7 @@ void NewstoryListData::TryUp(int iCount) ItemData *pPrev = nullptr; for (int j = 0; j < i + 1; j++) { auto *pItem = GetItem(j); - pPrev = pItem->checkNext(pPrev); + pPrev = pItem->checkNext(pPrev, m_hwnd); } caret = 0; @@ -1105,7 +1107,7 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM if (idx != -1) { auto *p = data->GetItem(idx); p->load(true); - p->setText(); + p->setText(data->m_hwnd); InvalidateRect(hwnd, 0, FALSE); } break; |