diff options
author | George Hazan <ghazan@miranda.im> | 2023-03-24 19:20:11 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-03-24 19:20:11 +0300 |
commit | 429f6f8dc6e73348426b58b388360ce94507092c (patch) | |
tree | 65f7e58d2675e02f067050d1a96ac59451cd2036 /src/mir_core | |
parent | 214a9afdb87700c80af08790b7cb967153cb932d (diff) |
StdMsg: flicker optimization, part 2
Diffstat (limited to 'src/mir_core')
-rw-r--r-- | src/mir_core/src/Windows/CCtrlPages.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/mir_core/src/Windows/CCtrlPages.cpp b/src/mir_core/src/Windows/CCtrlPages.cpp index c449014821..11f78c1b21 100644 --- a/src/mir_core/src/Windows/CCtrlPages.cpp +++ b/src/mir_core/src/Windows/CCtrlPages.cpp @@ -152,20 +152,21 @@ void CCtrlPages::ActivatePage(int iPage) if (info == nullptr || info->m_pDlg == nullptr)
return;
- 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);
- }
+ if (info->m_pDlg != m_pActivePage) {
+ if (m_pActivePage != nullptr)
+ ShowWindow(m_pActivePage->GetHwnd(), SW_HIDE);
- TabCtrl_SetCurSel(m_hwnd, iPage);
- ShowPage(m_pActivePage);
+ 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);
+ }
::SendMessage(m_pActivePage->GetHwnd(), WM_MOUSEACTIVATE, 0, 0);
}
|