From 33aa78b58cd86f9b8e38032ff157ff614c23d73c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 20 Mar 2024 20:38:35 +0300 Subject: various drawing quirks --- plugins/NewStory/src/history_array.cpp | 8 ++++---- plugins/NewStory/src/history_array.h | 2 +- plugins/NewStory/src/history_control.cpp | 3 ++- plugins/NewStory/src/templates.cpp | 9 +++++---- 4 files changed, 12 insertions(+), 10 deletions(-) (limited to 'plugins') diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index a22708743e..e9cc5989fa 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -214,14 +214,16 @@ int ItemData::calcHeight(int top, int width, POINT *pPos) if (m_bOfflineDownloaded != 0) // Download completed icon sz.cx -= 18; + leftOffset = pos.x; if (savedHeight == -1) { m_doc->render(sz.cx); - savedHeight = m_doc->height(); + savedHeight = m_doc->height() + 5; + Netlib_Logf(0, "Event %d rendered to %d with width %d", dbe.getEvent(), savedHeight, sz.cx); } if (pPos) *pPos = pos; - return savedHeight + 5; + return savedHeight; } void ItemData::checkCreate() @@ -457,8 +459,6 @@ void ItemData::load(bool bLoadAlways) void ItemData::setText() { m_doc = litehtml::document::createFromString(formatHtml(), &pOwner->webPage); - m_doc->render(pOwner->cachedWindowWidth); - savedHeight = m_doc->height(); } // Array diff --git a/plugins/NewStory/src/history_array.h b/plugins/NewStory/src/history_array.h index f5a39ba5bd..e805d8f45d 100644 --- a/plugins/NewStory/src/history_array.h +++ b/plugins/NewStory/src/history_array.h @@ -19,7 +19,7 @@ struct ItemData bool m_bOfflineFile; uint8_t m_grouping, m_bOfflineDownloaded; - int savedTop, savedHeight; + int savedTop, savedHeight, leftOffset; DB::EventInfo dbe; wchar_t *wtext; diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index b49ddf9adc..558fd4ca03 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -671,6 +671,7 @@ void NewstoryListData::Paint(simpledib::dib &dib, RECT *rcDraw) continue; auto *pItem = LoadItem(idx); + pItem->savedTop = top; POINT pos; int height = pItem->calcHeight(top, cachedWindowWidth, &pos); @@ -1446,7 +1447,7 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM auto *pItem = data->LoadItem(idx); litehtml::position::vector redraw_boxes; - pItem->m_doc->on_mouse_over(pt.x, pt.y, pt.x, pt.y, redraw_boxes); + pItem->m_doc->on_mouse_over(pt.x - pItem->leftOffset, pt.y - pItem->savedTop, pt.x, pt.y, redraw_boxes); } break; diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index e24574c880..030866aaa2 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -139,12 +139,13 @@ CMStringA ItemData::formatHtml(const wchar_t *pwszStr) str.AppendFormat(".nick {color: #%06X }\n", color2html(g_colorTable[(dbe.flags & DBEF_SENT) ? COLOR_OUTNICK : COLOR_INNICK].cl)); str.Append("\n"); - AppendString(str, T2Utf((pwszStr) ? pwszStr : formatString())); - str.Append(""); + CMStringA szBody; + AppendString(szBody, T2Utf((pwszStr) ? pwszStr : formatString()).get()); + UrlAutodetect(szBody); + str += szBody; - // url autodetect - UrlAutodetect(str); + str.Append(""); // Netlib_Logf(0, str); return str; -- cgit v1.2.3