From ac1a62b2a76e4d15e412b9579b80da2dafbc6d6a Mon Sep 17 00:00:00 2001
From: SineStriker <55847490+SineStriker@users.noreply.github.com>
Date: 周一, 19 5月 2025 15:38:12 +0800
Subject: [PATCH] Update qmsetup

---
 src/widgets/widgetwindowagent_win.cpp |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/widgets/widgetwindowagent_win.cpp b/src/widgets/widgetwindowagent_win.cpp
index 2e08d04..f7501e0 100644
--- a/src/widgets/widgetwindowagent_win.cpp
+++ b/src/widgets/widgetwindowagent_win.cpp
@@ -55,8 +55,16 @@
         }
 
         void updateGeometry() override {
-            widget->setContentsMargins(isNormalWindow() ? QMargins(0, borderThickness(), 0, 0)
-                                                        : QMargins());
+            // The window top border is manually painted by QWK so we want to give
+            // some margins to avoid it covering real window contents, however, we
+            // found that there are some rounding issues for the thin border and
+            // thus this small trick doesn't work very well when the DPR is not
+            // integer. So far we haven't found a perfect solution, so just don't
+            // set any margins. In theory the window content will only be covered
+            // by 1px or so, it should not be a serious issue in the real world.
+            //
+            // widget->setContentsMargins(isNormalWindow() ? QMargins(0, borderThickness(), 0, 0)
+            //                                             : QMargins());
         }
 
         bool isWindowActive() const override {
@@ -75,7 +83,7 @@
             // Due to the timer or user action, Qt will repaint some regions spontaneously,
             // even if there is no WM_PAINT message, we must wait for it to finish painting
             // and then update the top border area.
-            drawBorder();
+            drawBorderNative();
         }
 
         inline void forwardEventToWindowAndDraw(QWindow *window, QEvent *event) {
@@ -89,7 +97,7 @@
 
             // Upon receiving the WM_PAINT message, Qt will repaint the entire view, and we
             // must wait for it to finish painting before drawing this top border area.
-            drawBorder();
+            drawBorderNative();
         }
 
     protected:

--
Gitblit v1.9.1