diff options
Diffstat (limited to 'plugins/Scriver/src')
-rw-r--r-- | plugins/Scriver/src/msglog.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/plugins/Scriver/src/msglog.cpp b/plugins/Scriver/src/msglog.cpp index cf5d714c83..8715878381 100644 --- a/plugins/Scriver/src/msglog.cpp +++ b/plugins/Scriver/src/msglog.cpp @@ -318,6 +318,8 @@ public: m_rtf.SendMsg(EM_AUTOURLDETECT, TRUE, 0);
}
+ ////////////////////////////////////////////////////////////////////////////////////////
+
void CreateRtfHeader(RtfLogStreamData *streamData) override
{
HDC hdc = GetDC(nullptr);
@@ -355,6 +357,8 @@ public: buf.Append("}");
}
+ ////////////////////////////////////////////////////////////////////////////////////////
+
bool CreateRtfEvent(RtfLogStreamData *streamData, DB::EventInfo &dbei) override
{
if (!DbEventIsShown(dbei))
@@ -549,6 +553,8 @@ public: return true;
}
+ ////////////////////////////////////////////////////////////////////////////////////////
+
void LogEvents(MEVENT hDbEventFirst, int count, bool bAppend) override
{
if (!bAppend)
@@ -643,21 +649,20 @@ public: ////////////////////////////////////////////////////////////////////////////////////////
- void LogEvents(SESSION_INFO *si, int iStart, bool bAppend) override
+ void LogEvents(const LOGINFO *lin) override
{
- if (m_rtf.GetHwnd() == nullptr || si == nullptr)
+ if (m_rtf.GetHwnd() == nullptr)
return;
- auto &lin = si->arEvents[iStart];
- if (!bAppend && (si->iType == GCW_CHATROOM || si->iType == GCW_PRIVMESS) && !(m_pDlg.m_iLogFilterFlags & lin.iType))
- return;
+ auto *si = m_pDlg.getChat();
+ bool bRedraw = lin == nullptr;
RtfChatLogStreamData streamData;
streamData.pLog = this;
streamData.si = si;
- streamData.iStartEvent = iStart;
+ streamData.lin = lin;
streamData.bStripFormat = FALSE;
- streamData.bIsFirst = bAppend ? 1 : m_rtf.GetRichTextLength() == 0;
+ streamData.bIsFirst = bRedraw ? 1 : m_rtf.GetRichTextLength() == 0;
SCROLLINFO scroll;
scroll.cbSize = sizeof(SCROLLINFO);
@@ -680,20 +685,20 @@ public: // fix for the indent... must be a M$ bug
if (sel.cpMax == 0)
- bAppend = TRUE;
+ bRedraw = TRUE;
// get the number of pixels per logical inch
bool bFlag = false;
- if (bAppend) {
+ if (bRedraw) {
m_rtf.SetDraw(false);
bFlag = true;
}
// stream in the event(s)
- StreamChatRtfEvents(&streamData, bAppend);
+ StreamChatRtfEvents(&streamData, bRedraw);
// do smileys
- if (g_dat.smileyAddInstalled && (bAppend || (lin.ptszText && lin.iType != GC_EVENT_JOIN && lin.iType != GC_EVENT_NICK && lin.iType != GC_EVENT_ADDSTATUS && lin.iType != GC_EVENT_REMOVESTATUS))) {
+ if (g_dat.smileyAddInstalled && (bRedraw || (lin && lin->ptszText && lin->iType != GC_EVENT_JOIN && lin->iType != GC_EVENT_NICK && lin->iType != GC_EVENT_ADDSTATUS && lin->iType != GC_EVENT_REMOVESTATUS))) {
newsel.cpMax = -1;
newsel.cpMin = sel.cpMin;
if (newsel.cpMin < 0)
@@ -702,7 +707,7 @@ public: SMADD_RICHEDIT3 sm = { sizeof(sm) };
sm.hwndRichEditControl = m_rtf.GetHwnd();
sm.Protocolname = si->pszModule;
- sm.rangeToReplace = bAppend ? nullptr : &newsel;
+ sm.rangeToReplace = bRedraw ? nullptr : &newsel;
sm.flags = 0;
sm.disableRedraw = TRUE;
sm.hContact = m_pDlg.m_hContact;
@@ -710,7 +715,7 @@ public: }
// scroll log to bottom if the log was previously scrolled to bottom, else restore old position
- if (bAppend || (UINT)scroll.nPos >= (UINT)scroll.nMax - scroll.nPage - 5 || scroll.nMax - scroll.nMin - scroll.nPage < 50)
+ if (bRedraw || (UINT)scroll.nPos >= (UINT)scroll.nMax - scroll.nPage - 5 || scroll.nMax - scroll.nMin - scroll.nPage < 50)
ScrollToBottom();
else
m_rtf.SendMsg(EM_SETSCROLLPOS, 0, (LPARAM)&point);
|