diff options
| author | George Hazan <george.hazan@gmail.com> | 2024-05-01 14:07:01 +0300 |
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2024-05-01 14:07:01 +0300 |
| commit | 720d774bfc0aa7941d1493a63291352f223aa61e (patch) | |
| tree | 72e69d50f274695fcb95bca289b497190e6c78ab /src | |
| parent | 8f1efe1635c9572771a2e9e319e52dd989c87f90 (diff) | |
CSplitter: fix to avoid problems caused by WM_SIZE optimization
Diffstat (limited to 'src')
| -rw-r--r-- | src/mir_core/src/Windows/CDlgBase.cpp | 32 | ||||
| -rw-r--r-- | src/mir_core/src/Windows/CSplitter.cpp | 4 |
2 files changed, 22 insertions, 14 deletions
diff --git a/src/mir_core/src/Windows/CDlgBase.cpp b/src/mir_core/src/Windows/CDlgBase.cpp index d4a22ca021..b0f184acf3 100644 --- a/src/mir_core/src/Windows/CDlgBase.cpp +++ b/src/mir_core/src/Windows/CDlgBase.cpp @@ -144,7 +144,8 @@ void CDlgBase::NotifyChange(void) void CDlgBase::Resize()
{
- SendMessage(m_hwnd, WM_SIZE, 0, 0);
+ m_bScheduledResize = true;
+ PostMessageW(m_hwnd, WM_SIZE, 0, 0);
}
void CDlgBase::SetCaption(const wchar_t *ptszCaption)
@@ -401,18 +402,25 @@ INT_PTR CDlgBase::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) break;
case WM_SIZE:
- RECT rc;
- if (lParam == 0)
- GetClientRect(m_hwnd, &rc);
- else {
- rc.left = rc.top = 0;
- rc.right = GET_X_LPARAM(lParam);
- rc.left = GET_Y_LPARAM(lParam);
- }
-
- if (memcmp(&m_rcPrev, &rc, sizeof(RECT))) {
+ if (m_bScheduledResize) {
+ m_bScheduledResize = false;
OnResize();
- m_rcPrev = rc;
+ GetClientRect(m_hwnd, &m_rcPrev);
+ }
+ else {
+ RECT rc;
+ if (lParam == 0)
+ GetClientRect(m_hwnd, &rc);
+ else {
+ rc.left = rc.top = 0;
+ rc.right = GET_X_LPARAM(lParam);
+ rc.left = GET_Y_LPARAM(lParam);
+ }
+
+ if (memcmp(&m_rcPrev, &rc, sizeof(RECT))) {
+ OnResize();
+ m_rcPrev = rc;
+ }
}
return TRUE;
diff --git a/src/mir_core/src/Windows/CSplitter.cpp b/src/mir_core/src/Windows/CSplitter.cpp index d224e602ad..fc8ee7e561 100644 --- a/src/mir_core/src/Windows/CSplitter.cpp +++ b/src/mir_core/src/Windows/CSplitter.cpp @@ -69,13 +69,13 @@ LRESULT CSplitter::CustomWndProc(UINT msg, WPARAM wParam, LPARAM lParam) }
OnChange(this);
- PostMessage(m_parentWnd->GetHwnd(), WM_SIZE, 0, 0);
+ m_parentWnd->Resize();
}
return 0;
case WM_LBUTTONUP:
ReleaseCapture();
- PostMessage(m_parentWnd->GetHwnd(), WM_SIZE, 0, 0);
+ m_parentWnd->Resize();
return 0;
}
|
