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