summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-12-20 20:01:29 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-12-20 20:01:29 +0300
commit78cf4cb0dc9e9ec06a7a7fd12a77e8fdf229644d (patch)
treee73976ad77ea32fcf9022bafe6d4b81c9e9a32db
parent14457811ab95419fd256d4fefd02d61a47603b7a (diff)
code cleaning
-rw-r--r--plugins/NewStory/src/history_array.cpp34
-rw-r--r--plugins/NewStory/src/history_array.h13
-rw-r--r--plugins/NewStory/src/history_control.cpp8
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;