Yuhang Zhao
2023-12-07 0209d06cc48e4e40c9c54d20d7fd6314d5492a34
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;
    }
}