summaryrefslogtreecommitdiff
path: root/src/mir_core
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-03-22 17:50:33 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-03-22 17:50:33 +0300
commit8e6eec574c974340d503bf7db30bc47162574789 (patch)
tree5398f242496b3809c5b3e86ba125d8d8e9ac1431 /src/mir_core
parented54464972bcea62c617e1ade88722454b037ee0 (diff)
more flicker reduction
Diffstat (limited to 'src/mir_core')
-rw-r--r--src/mir_core/src/Windows/CCtrlPages.cpp27
1 files changed, 15 insertions, 12 deletions
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);
}