From 0209d06cc48e4e40c9c54d20d7fd6314d5492a34 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <zhaoyuhang@rankyee.com> Date: ćšć, 07 12æ 2023 17:58:19 +0800 Subject: [PATCH] minor tweaks --- src/core/contexts/win32windowcontext_p.h | 7 +++++-- src/core/contexts/win32windowcontext.cpp | 17 ++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 44bd408..af62e4c 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -432,9 +432,6 @@ QT_NATIVE_EVENT_RESULT_TYPE *result) override { Q_UNUSED(eventType) - auto orgLastMessageContext = lastMessageContext; - lastMessageContext = nullptr; - // It has been observed that the pointer that Qt gives us is sometimes null on some // machines. We need to guard against it in such scenarios. if (!result) { @@ -445,9 +442,9 @@ // Qt needs to refer to the WM_NCCALCSIZE message data that hasn't been processed, so we // have to process it after Qt acquired the initial data. auto msg = static_cast<const MSG *>(message); - if (msg->message == WM_NCCALCSIZE && orgLastMessageContext) { + if (msg->message == WM_NCCALCSIZE && lastMessageContext) { LRESULT res; - if (Win32WindowContext::nonClientCalcSizeHandler(msg->hwnd, msg->message, + if (lastMessageContext->nonClientCalcSizeHandler(msg->hwnd, msg->message, msg->wParam, msg->lParam, &res)) { *result = decltype(*result)(res); return true; @@ -549,7 +546,9 @@ // forward it right away and process it in our native event filter. if (message == WM_NCCALCSIZE) { WindowsNativeEventFilter::lastMessageContext = ctx; - return ::CallWindowProcW(g_qtWindowProc, hWnd, message, wParam, lParam); + LRESULT result = ::CallWindowProcW(g_qtWindowProc, hWnd, message, wParam, lParam); + WindowsNativeEventFilter::lastMessageContext = nullptr; + return result; } // Try hooked procedure and save result @@ -564,7 +563,6 @@ } // Continue dispatching. - WindowsNativeEventFilter::lastMessageContext = ctx; return ::CallWindowProcW(g_qtWindowProc, hWnd, message, wParam, lParam); } @@ -1511,4 +1509,9 @@ return true; } + bool Win32WindowContext::systemMenuHandler(HWND hWnd, UINT message, WPARAM wParam, + LPARAM lParam, LRESULT *result) { + return false; + } + } diff --git a/src/core/contexts/win32windowcontext_p.h b/src/core/contexts/win32windowcontext_p.h index 8906a51..27b4e1f 100644 --- a/src/core/contexts/win32windowcontext_p.h +++ b/src/core/contexts/win32windowcontext_p.h @@ -27,6 +27,9 @@ public: bool windowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result); + bool systemMenuHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, + LRESULT *result); + // In order to perfectly apply Windows 11 Snap Layout into the Qt window, we need to // intercept and simulate most of the mouse events, so that the processing logic // is quite complex. Simultaneously, in order to make the handling code of other @@ -37,8 +40,8 @@ bool customWindowHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result); - static bool nonClientCalcSizeHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, - LRESULT *result); + bool nonClientCalcSizeHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, + LRESULT *result); protected: WId windowId = 0; -- Gitblit v1.9.1