From c1bf0c26683017c77c596c8e55fb78e901ff7b01 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周二, 19 12月 2023 19:56:35 +0800
Subject: [PATCH] minor tweaks

---
 examples/mainwindow/main.cpp             |    9 +++++++++
 src/core/contexts/win32windowcontext.cpp |   42 ++++++++++++++++++++++++++++++++----------
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/examples/mainwindow/main.cpp b/examples/mainwindow/main.cpp
index 9e86f81..dd5dc5d 100644
--- a/examples/mainwindow/main.cpp
+++ b/examples/mainwindow/main.cpp
@@ -16,6 +16,15 @@
         Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
     QApplication a(argc, argv);
 
+#if 0 && defined(Q_OS_WINDOWS) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+    QApplication::setFont([]() {
+        QFont f("Microsoft YaHei");
+        f.setStyleStrategy(QFont::PreferAntialias);
+        f.setPixelSize(15);
+        return f;
+    }());
+#endif
+
     MainWindow w;
     w.show();
     return a.exec();
diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp
index 4465e01..ad502fe 100644
--- a/src/core/contexts/win32windowcontext.cpp
+++ b/src/core/contexts/win32windowcontext.cpp
@@ -437,9 +437,12 @@
         }
         RECT currentWindowRect{};
         ::GetWindowRect(hwnd, &currentWindowRect);
-        auto newWindowX = activeMonitorRect.left + (currentWindowRect.left - currentMonitorRect.left);
+        auto newWindowX =
+            activeMonitorRect.left + (currentWindowRect.left - currentMonitorRect.left);
         auto newWindowY = activeMonitorRect.top + (currentWindowRect.top - currentMonitorRect.top);
-        ::SetWindowPos(hwnd, nullptr, newWindowX, newWindowY, RECT_WIDTH(currentWindowRect), RECT_HEIGHT(currentWindowRect), SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
+        ::SetWindowPos(hwnd, nullptr, newWindowX, newWindowY, RECT_WIDTH(currentWindowRect),
+                       RECT_HEIGHT(currentWindowRect),
+                       SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
     }
 
     static inline void bringWindowToFront(HWND hwnd) {
@@ -466,7 +469,8 @@
         // First try to send a message to the current foreground window to check whether
         // it is currently hanging or not.
         if (!::SendMessageTimeoutW(oldForegroundWindow, WM_NULL, 0, 0,
-                                  SMTO_BLOCK | SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 1000, nullptr)) {
+                                   SMTO_BLOCK | SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 1000,
+                                   nullptr)) {
             // The foreground window hangs, can't activate current window.
             return;
         }
@@ -475,16 +479,23 @@
         // We won't be able to change a window's Z order if it's not our own window,
         // so we use this small technique to pretend the foreground window is ours.
         ::AttachThreadInput(windowThreadProcessId, currentThreadId, TRUE);
-        QWK_USED struct Cleaner {
-            Cleaner(DWORD idAttach, DWORD idAttachTo) : m_idAttach(idAttach), m_idAttachTo(idAttachTo) {}
+
+        struct Cleaner {
+            Cleaner(DWORD idAttach, DWORD idAttachTo)
+                : m_idAttach(idAttach), m_idAttachTo(idAttachTo) {
+            }
             ~Cleaner() {
                 ::AttachThreadInput(m_idAttach, m_idAttachTo, FALSE);
             }
+
         private:
-            Q_DISABLE_COPY(Cleaner)
             DWORD m_idAttach;
             DWORD m_idAttachTo;
-        } cleaner{ windowThreadProcessId, currentThreadId };
+
+            Q_DISABLE_COPY(Cleaner)
+        };
+        [[maybe_unused]] Cleaner cleaner{windowThreadProcessId, currentThreadId};
+
         ::BringWindowToTop(hwnd);
         // Activate the window too. This will force us to the virtual desktop this
         // window is on, if it's on another virtual desktop.
@@ -1439,10 +1450,21 @@
                 // Terminal does, however, later I found that if we choose a proper
                 // color, our homemade top border can almost have exactly the same
                 // appearance with the system's one.
+                struct HitTestRecorder {
+                    HitTestRecorder(Win32WindowContext *ctx, LRESULT *result)
+                        : ctx(ctx), result(result) {
+                    }
+                    ~HitTestRecorder() {
+                        ctx->lastHitTestResult = getHitWindowPart(int(*result));
+                    }
 
-                [[maybe_unused]] const auto &hitTestRecorder = qScopeGuard([this, result]() {
-                    lastHitTestResult = getHitWindowPart(int(*result)); //
-                });
+                private:
+                    Win32WindowContext *ctx;
+                    LRESULT *result;
+
+                    Q_DISABLE_COPY(HitTestRecorder)
+                };
+                [[maybe_unused]] HitTestRecorder hitTestRecorder{this, result};
 
                 POINT nativeGlobalPos{GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
                 POINT nativeLocalPos = nativeGlobalPos;

--
Gitblit v1.9.1