From 651805739be12125295d992c3e6ae00b6bef9fe2 Mon Sep 17 00:00:00 2001
From: Zhao Yuhang <2546789017@qq.com>
Date: 周六, 09 12月 2023 16:17:16 +0800
Subject: [PATCH] minor tweaks

---
 src/core/contexts/win32windowcontext.cpp |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp
index c475a62..329c052 100644
--- a/src/core/contexts/win32windowcontext.cpp
+++ b/src/core/contexts/win32windowcontext.cpp
@@ -764,10 +764,6 @@
             return false;
         }
 
-        if (systemMenuHandler(hWnd, message, wParam, lParam, result)) {
-            return true;
-        }
-
         // Test snap layout
         if (snapLayoutHandler(hWnd, message, wParam, lParam, result)) {
             return true;
@@ -775,6 +771,10 @@
 
         // Main implementation
         if (customWindowHandler(hWnd, message, wParam, lParam, result)) {
+            return true;
+        }
+
+        if (systemMenuHandler(hWnd, message, wParam, lParam, result)) {
             return true;
         }
 
@@ -1187,22 +1187,31 @@
                     // this is also the normal behavior of a native Win32 window (but only when the
                     // window is not maximized/fullscreen/minimized, of course).
                     if (isWindowNoState(hWnd)) {
-                        static constexpr const int kBorderSize = 2;
+                        static constexpr const auto kBorderSize = quint8{2};
                         bool isTop = (nativeLocalPos.y <= kBorderSize);
+                        bool isLeft = nativeLocalPos.x <= kBorderSize;
                         bool isRight = (nativeLocalPos.x >= (clientWidth - kBorderSize));
-                        if (isTop || isRight) {
+                        if (isTop || isLeft || isRight) {
                             if (dontOverrideCursor) {
                                 // The user doesn't want the window to be resized, so we tell
                                 // Windows we are in the client area so that the controls beneath
                                 // the mouse cursor can still be hovered or clicked.
                                 *result = (isTitleBar ? HTCAPTION : HTCLIENT);
                             } else {
-                                if (isTop && isRight) {
-                                    *result = HTTOPRIGHT;
-                                } else if (isTop) {
-                                    *result = HTTOP;
+                                if (isTop) {
+                                    if (isLeft) {
+                                        *result = HTTOPLEFT;
+                                    } else if (isRight) {
+                                        *result = HTTOPRIGHT;
+                                    } else {
+                                        *result = HTTOP;
+                                    }
                                 } else {
-                                    *result = HTRIGHT;
+                                    if (isLeft) {
+                                        *result = HTLEFT;
+                                    } else {
+                                        *result = HTRIGHT;
+                                    }
                                 }
                             }
                         }

--
Gitblit v1.9.1