From 1a1f26d9e4ab6a4fe51baa78e40c4cdf3f402bcf Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: ćšć, 07 12æ 2023 14:27:00 +0800 Subject: [PATCH] Add context factory --- src/core/contexts/win32windowcontext.cpp | 46 ++++++++-------------------------------------- 1 files changed, 8 insertions(+), 38 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 83e2cee..538188d 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -188,20 +188,12 @@ } static inline void triggerFrameChange(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return; - } ::SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_FRAMECHANGED); } static inline quint32 getDpiForWindow(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return 0; - } const DynamicApis &apis = DynamicApis::instance(); if (apis.pGetDpiForWindow) { // Win10 return apis.pGetDpiForWindow(hwnd); @@ -221,10 +213,6 @@ } static inline quint32 getResizeBorderThickness(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return 0; - } const DynamicApis &apis = DynamicApis::instance(); if (apis.pGetSystemMetricsForDpi) { const quint32 dpi = getDpiForWindow(hwnd); @@ -236,10 +224,6 @@ } static inline quint32 getTitleBarHeight(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return 0; - } const auto captionHeight = [hwnd]() -> int { const DynamicApis &apis = DynamicApis::instance(); if (apis.pGetSystemMetricsForDpi) { @@ -253,11 +237,6 @@ } static inline void updateInternalWindowFrameMargins(HWND hwnd, QWindow *window) { - Q_ASSERT(hwnd); - Q_ASSERT(window); - if (!hwnd || !window) { - return; - } const auto margins = [hwnd]() -> QMargins { const int titleBarHeight = getTitleBarHeight(hwnd); if (isWin10OrGreater()) { @@ -285,10 +264,6 @@ } static inline MONITORINFOEXW getMonitorForWindow(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return {}; - } // Use "MONITOR_DEFAULTTONEAREST" here so that we can still get the correct // monitor even if the window is minimized. HMONITOR monitor = ::MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST); @@ -299,16 +274,13 @@ }; static inline void moveToDesktopCenter(HWND hwnd) { - Q_ASSERT(hwnd); - if (!hwnd) { - return; - } const auto monitorInfo = getMonitorForWindow(hwnd); RECT windowRect{}; ::GetWindowRect(hwnd, &windowRect); const auto newX = (RECT_WIDTH(monitorInfo.rcMonitor) - RECT_WIDTH(windowRect)) / 2; const auto newY = (RECT_HEIGHT(monitorInfo.rcMonitor) - RECT_HEIGHT(windowRect)) / 2; - ::SetWindowPos(hwnd, nullptr, newX, newY, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); + ::SetWindowPos(hwnd, nullptr, newX, newY, 0, 0, + SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); } static inline bool isFullScreen(HWND hwnd) { @@ -538,8 +510,7 @@ return ::CallWindowProcW(g_qtWindowProc, hWnd, message, wParam, lParam); } - Win32WindowContext::Win32WindowContext(QObject *host, WindowItemDelegate *delegate) - : AbstractWindowContext(host, delegate) { + Win32WindowContext::Win32WindowContext() : AbstractWindowContext() { } Win32WindowContext::~Win32WindowContext() { @@ -554,8 +525,8 @@ } } - bool Win32WindowContext::setup() { - if (!m_windowHandle) { + bool Win32WindowContext::setup(QObject *host, WindowItemDelegate *delegate) { + if (!AbstractWindowContext::setup(host, delegate)) { return false; } @@ -908,7 +879,8 @@ case WM_SHOWWINDOW: { if (!centered) { // 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 lParam is zero, the message was sent because of a call to the ShowWindow + // function. if (wParam && lParam == 0) { centered = true; moveToDesktopCenter(hWnd); @@ -1004,7 +976,7 @@ // and align it with the upper-left corner of our new client area". const auto clientRect = wParam ? &(reinterpret_cast<LPNCCALCSIZE_PARAMS>(lParam))->rgrc[0] - : reinterpret_cast<LPRECT>(lParam); + : reinterpret_cast<LPRECT>(lParam); if (isWin10OrGreater()) { // Store the original top margin before the default window procedure applies the // default frame. @@ -1292,8 +1264,6 @@ break; case CoreWindowAgent::Close: *result = HTCLOSE; - break; - case CoreWindowAgent::Unknown: break; default: break; // unreachable -- Gitblit v1.9.1