From 2d2fc799bc698ebf7e7c8bcc394366d0d7bf071b Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周二, 20 2月 2024 18:18:39 +0800 Subject: [PATCH] Partially finish the bug after window close and reshow --- src/core/contexts/win32windowcontext.cpp | 43 ++++++------------------------------------- 1 files changed, 6 insertions(+), 37 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 17a42c1..4a859c7 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -1,3 +1,7 @@ +// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) +// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) +// SPDX-License-Identifier: Apache-2.0 + #include "win32windowcontext_p.h" #include <optional> @@ -92,18 +96,6 @@ monitorInfo.cbSize = sizeof(monitorInfo); ::GetMonitorInfoW(monitor, &monitorInfo); return monitorInfo; - } - - static inline void moveWindowToDesktopCenter(HWND hwnd) { - MONITORINFOEXW monitorInfo = getMonitorForWindow(hwnd); - RECT windowRect{}; - ::GetWindowRect(hwnd, &windowRect); - const auto newX = monitorInfo.rcMonitor.left + - (RECT_WIDTH(monitorInfo.rcMonitor) - RECT_WIDTH(windowRect)) / 2; - const auto newY = monitorInfo.rcMonitor.top + - (RECT_HEIGHT(monitorInfo.rcMonitor) - RECT_HEIGHT(windowRect)) / 2; - ::SetWindowPos(hwnd, nullptr, newX, newY, 0, 0, - SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); } static inline void moveWindowToMonitor(HWND hwnd, const MONITORINFOEXW &activeMonitor) { @@ -559,14 +551,6 @@ void Win32WindowContext::virtual_hook(int id, void *data) { switch (id) { - case CentralizeHook: { - if (!windowId) - return; - const auto hwnd = reinterpret_cast<HWND>(windowId); - moveWindowToDesktopCenter(hwnd); - return; - } - case RaiseWindowHook: { if (!windowId) return; @@ -602,8 +586,8 @@ return; } - case DrawWindows10BorderHook: { #if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) + case DrawWindows10BorderHook: { if (!windowId) return; @@ -643,12 +627,10 @@ QPoint{m_windowHandle->width(), 0} }); painter.restore(); -#endif return; } case DrawWindows10BorderHook2: { -#if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS) if (!m_windowHandle) return; @@ -669,9 +651,9 @@ ::FillRect(hdc, &rcTopBorder, reinterpret_cast<HBRUSH>(::GetStockObject(BLACK_BRUSH))); ::ReleaseDC(hWnd, hdc); -#endif return; } +#endif default: break; @@ -1324,19 +1306,6 @@ bool Win32WindowContext::customWindowHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result) { switch (message) { - case WM_SHOWWINDOW: { - 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) { - initialCentered = true; - moveWindowToDesktopCenter(hWnd); - } - } - break; - } - case WM_NCHITTEST: { // 鍘熺敓Win32绐楀彛鍙湁椤惰竟鏄湪绐楀彛鍐呴儴resize鐨勶紝鍏朵綑涓夎竟閮芥槸鍦ㄧ獥鍙� // 澶栭儴杩涜resize鐨勶紝鍏跺師鐞嗘槸锛學S_THICKFRAME杩欎釜绐楀彛鏍峰紡浼氬湪绐� -- Gitblit v1.9.1