From 2f2ee6571e9ce784db0488ade60816f09bd7448c Mon Sep 17 00:00:00 2001 From: SineStriker <trueful@163.com> Date: 周三, 27 12月 2023 01:56:47 +0800 Subject: [PATCH] Finish customize system button pos for QtWidgets --- src/core/contexts/win32windowcontext.cpp | 23 ++++++++++------------- 1 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 98f47d6..dfbf2e2 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -9,7 +9,6 @@ #include <QtGui/QGuiApplication> #include <QtGui/QPainter> #include <QtGui/QPalette> -#include <QtGui/QStyleHints> #include <QtGui/private/qhighdpiscaling_p.h> #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) @@ -47,13 +46,13 @@ static WNDPROC g_qtWindowProc = nullptr; static inline bool -#if !QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if !QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) constexpr #endif isSystemBorderEnabled() { return -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) isWin10OrGreater() #else false @@ -402,8 +401,8 @@ return false; } - static WindowsNativeEventFilter *instance; - static Win32WindowContext *lastMessageContext; + static inline WindowsNativeEventFilter *instance = nullptr; + static inline Win32WindowContext *lastMessageContext = nullptr; static inline void install() { if (instance) { @@ -420,9 +419,6 @@ instance = nullptr; } }; - - WindowsNativeEventFilter *WindowsNativeEventFilter::instance = nullptr; - Win32WindowContext *WindowsNativeEventFilter::lastMessageContext = nullptr; // https://github.com/qt/qtbase/blob/e26a87f1ecc40bc8c6aa5b889fce67410a57a702/src/plugins/platforms/windows/qwindowscontext.cpp#L1025 // We can see from the source code that Qt will filter out some messages first and then send the @@ -574,6 +570,7 @@ case RaiseWindowHook: { if (!windowId) return; + m_delegate->setWindowVisible(m_host, true); const auto hwnd = reinterpret_cast<HWND>(windowId); bringWindowToFront(hwnd); return; @@ -606,7 +603,7 @@ } case DrawWindows10BorderHook: { -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) if (!windowId) return; @@ -651,7 +648,7 @@ } case DrawWindows10BorderHook2: { -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) if (!m_windowHandle) return; @@ -729,7 +726,7 @@ { auto style = ::GetWindowLongPtrW(hWnd, GWL_STYLE); -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER) +#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) ::SetWindowLongPtrW(hWnd, GWL_STYLE, style & (~WS_SYSMENU)); #else ::SetWindowLongPtrW(hWnd, GWL_STYLE, @@ -1319,12 +1316,12 @@ LPARAM lParam, LRESULT *result) { switch (message) { case WM_SHOWWINDOW: { - if (!centered) { + if (!initialCentered) { // If wParam is TRUE, the window is being shown. // If lParam is zero, the message was sent because of a call to the ShowWindow // function. if (wParam && !lParam) { - centered = true; + initialCentered = true; moveWindowToDesktopCenter(hWnd); } } -- Gitblit v1.9.1