From 8e6eec574c974340d503bf7db30bc47162574789 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 22 Mar 2023 17:50:33 +0300 Subject: more flicker reduction --- src/core/stdmsg/src/msgdialog.cpp | 7 +------ src/mir_core/src/Windows/CCtrlPages.cpp | 27 +++++++++++++++------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/core/stdmsg/src/msgdialog.cpp b/src/core/stdmsg/src/msgdialog.cpp index 8bc0d6cc3d..691afe4cc6 100644 --- a/src/core/stdmsg/src/msgdialog.cpp +++ b/src/core/stdmsg/src/msgdialog.cpp @@ -578,13 +578,8 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) CSuper::DlgProc(uMsg, wParam, lParam); // call built-in resizer SetButtonsPos(); - m_pLog->Resize(); - InvalidateRect(m_pOwner->m_hwndStatus, nullptr, true); - RedrawWindow(m_message.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE); - RedrawWindow(m_btnOk.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE); - if (g_plugin.bShowAvatar && m_avatarPic) - RedrawWindow(m_avatar.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE); + InvalidateRect(m_pOwner->m_hwndStatus, nullptr, false); } return TRUE; diff --git a/src/mir_core/src/Windows/CCtrlPages.cpp b/src/mir_core/src/Windows/CCtrlPages.cpp index 0f3c15e024..3af2d5667c 100644 --- a/src/mir_core/src/Windows/CCtrlPages.cpp +++ b/src/mir_core/src/Windows/CCtrlPages.cpp @@ -47,8 +47,8 @@ struct CCtrlPages::TPageInfo : public MZeroedObject CDlgBase *m_pDlg; }; -CCtrlPages::CCtrlPages(CDlgBase *dlg, int ctrlId) - : CCtrlBase(dlg, ctrlId), +CCtrlPages::CCtrlPages(CDlgBase *dlg, int ctrlId) : + CCtrlBase(dlg, ctrlId), m_hIml(nullptr), m_pActivePage(nullptr), m_pages(4, NumericKeySortT) @@ -152,19 +152,22 @@ void CCtrlPages::ActivatePage(int iPage) if (info == nullptr || info->m_pDlg == nullptr) return; - if (m_pActivePage != nullptr) - ShowWindow(m_pActivePage->GetHwnd(), SW_HIDE); + if (info->m_pDlg != m_pActivePage) { + if (m_pActivePage != nullptr) + ShowWindow(m_pActivePage->GetHwnd(), SW_HIDE); - m_pActivePage = info->m_pDlg; - if (m_pActivePage->GetHwnd() && info->m_bScheduledResize) { - RECT rc; - GetClientRect(m_hwnd, &rc); - TabCtrl_AdjustRect(m_hwnd, FALSE, &rc); - SetWindowPos(m_pActivePage->GetHwnd(), nullptr, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOACTIVATE | SWP_NOZORDER); + m_pActivePage = info->m_pDlg; + if (m_pActivePage->GetHwnd() && info->m_bScheduledResize) { + RECT rc; + GetClientRect(m_hwnd, &rc); + TabCtrl_AdjustRect(m_hwnd, FALSE, &rc); + SetWindowPos(m_pActivePage->GetHwnd(), nullptr, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOACTIVATE | SWP_NOZORDER); + } + + TabCtrl_SetCurSel(m_hwnd, iPage); + ShowPage(m_pActivePage); } - TabCtrl_SetCurSel(m_hwnd, iPage); - ShowPage(m_pActivePage); ::SendMessage(m_pActivePage->GetHwnd(), WM_MOUSEACTIVATE, 0, 0); } -- cgit v1.2.3