From 1c79bb4a2bc81b9a726ebcbb9993a0fada886f47 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 3 Oct 2019 20:12:17 +0300 Subject: fixes #2089 (tabSRMM doesn't scroll to bottom if custom log is chosen) --- plugins/TabSRMM/src/generic_msghandlers.cpp | 2 +- plugins/TabSRMM/src/msgdialog.cpp | 2 +- plugins/TabSRMM/src/msgdlgother.cpp | 17 +++++++++++++++-- plugins/TabSRMM/src/msglog.cpp | 8 -------- plugins/TabSRMM/src/msgs.h | 1 + 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/plugins/TabSRMM/src/generic_msghandlers.cpp b/plugins/TabSRMM/src/generic_msghandlers.cpp index d7087b5911..196a37e7a8 100644 --- a/plugins/TabSRMM/src/generic_msghandlers.cpp +++ b/plugins/TabSRMM/src/generic_msghandlers.cpp @@ -1136,7 +1136,7 @@ void CMsgDialog::DM_EventAdded(WPARAM hContact, LPARAM lParam) if (hDbEvent != m_hDbEventFirst) { if (!(m_dwFlagsEx & MWF_SHOW_SCROLLINGDISABLED)) - m_pLog->LogEvents(hDbEvent, 1, 1); + StreamEvents(hDbEvent, 1, 1); else { if (m_iNextQueuedEvent >= m_iEventQueueSize) { m_hQueuedEvents = (MEVENT*)mir_realloc(m_hQueuedEvents, (m_iEventQueueSize + 10) * sizeof(MEVENT)); diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index 6a6867b2d4..8100da457e 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -2741,7 +2741,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) RemakeLog(); } else if (m_hContact == wParam && db_mc_isSub(wParam) && db_event_getContact(lParam) != wParam) - m_pLog->LogEvents(lParam, 1, 1); + StreamEvents(lParam, 1, 1); return 0; case HM_DBEVENTADDED: diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index e6ebb9eb48..a21f3f99a0 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -1219,7 +1219,7 @@ void CMsgDialog::RemakeLog() m_szMicroLf[0] = 0; m_lastEventTime = 0; m_iLastEventType = -1; - m_pLog->LogEvents(m_hDbEventFirst, -1, 0); + StreamEvents(m_hDbEventFirst, -1, 0); } ///////////////////////////////////////////////////////////////////////////////////////// @@ -1228,7 +1228,7 @@ void CMsgDialog::ReplayQueue() { for (int i = 0; i < m_iNextQueuedEvent; i++) if (m_hQueuedEvents[i] != 0) - m_pLog->LogEvents(m_hQueuedEvents[i], 1, 1); + StreamEvents(m_hQueuedEvents[i], 1, 1); m_iNextQueuedEvent = 0; SetDlgItemText(m_hwnd, IDC_LOGFROZENTEXT, m_bNotOnList ? TranslateT("Contact not on list. You may add it...") : @@ -1696,6 +1696,19 @@ void CMsgDialog::SplitterMoved(int coord, HWND hwnd) ///////////////////////////////////////////////////////////////////////////////////////// +void CMsgDialog::StreamEvents(MEVENT hDbEventFirst, int count, bool bAppend) +{ + m_pLog->LogEvents(hDbEventFirst, count, bAppend); + + DM_ScrollToBottom(0, 0); + if (bAppend && hDbEventFirst) + m_hDbEventLast = hDbEventFirst; + else + m_hDbEventLast = db_event_last(m_hContact); +} + +///////////////////////////////////////////////////////////////////////////////////////// + bool CMsgDialog::TabAutoComplete() { LRESULT lResult = m_message.SendMsg(EM_GETSEL, 0, 0); diff --git a/plugins/TabSRMM/src/msglog.cpp b/plugins/TabSRMM/src/msglog.cpp index faf830e942..c358875db2 100644 --- a/plugins/TabSRMM/src/msglog.cpp +++ b/plugins/TabSRMM/src/msglog.cpp @@ -1223,12 +1223,6 @@ void CLogWindow::LogEvents(MEVENT hDbEventFirst, int count, bool fAppend, DBEVEN tm_today.tm_hour = tm_today.tm_min = tm_today.tm_sec = 0; today = mktime(&tm_today); - m_pDlg.DM_ScrollToBottom(0, 0); - if (fAppend && hDbEventFirst) - m_pDlg.m_hDbEventLast = hDbEventFirst; - else - m_pDlg.m_hDbEventLast = db_event_last(m_pDlg.m_hContact); - // separator strings used for grid lines, message separation and so on... m_pDlg.m_bClrAdded = false; @@ -1316,8 +1310,6 @@ void CLogWindow::LogEvents(MEVENT hDbEventFirst, int count, bool fAppend, DBEVEN int len = GetWindowTextLength(m_rtf.GetHwnd())-1; m_rtf.SendMsg(EM_SETSEL, len, len); - m_pDlg.DM_ScrollToBottom(0, 0); - m_rtf.SendMsg(WM_SETREDRAW, TRUE, 0); InvalidateRect(m_rtf.GetHwnd(), nullptr, FALSE); EnableWindow(GetDlgItem(m_pDlg.m_hwnd, IDC_QUOTE), m_pDlg.m_hDbEventLast != 0); diff --git a/plugins/TabSRMM/src/msgs.h b/plugins/TabSRMM/src/msgs.h index 818ec6606b..029307088c 100644 --- a/plugins/TabSRMM/src/msgs.h +++ b/plugins/TabSRMM/src/msgs.h @@ -344,6 +344,7 @@ class CMsgDialog : public CSrmmBaseDialog void SaveAvatarToFile(HBITMAP hbm, int isOwnPic); void SendHBitmapAsFile(HBITMAP hbmp) const; void ShowPopupMenu(const CCtrlBase&, POINT pt); + void StreamEvents(MEVENT, int, bool); void UpdateWindowIcon(void); void UpdateWindowState(UINT msg); void VerifyProxy(void); -- cgit v1.2.3