From 4d193ef7c61fb4800868f150be6a0bb04b725463 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周二, 20 2月 2024 15:37:54 +0800
Subject: [PATCH] minor tweaks

---
 src/widgets/widgetwindowagent_win.cpp |   27 ++++++++++-----------------
 1 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/src/widgets/widgetwindowagent_win.cpp b/src/widgets/widgetwindowagent_win.cpp
index 02ea7e5..9a4c6b3 100644
--- a/src/widgets/widgetwindowagent_win.cpp
+++ b/src/widgets/widgetwindowagent_win.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 "widgetwindowagent_p.h"
 
 #include <QtCore/QDebug>
@@ -5,6 +9,7 @@
 #include <QtGui/QPainter>
 
 #include <QWKCore/qwindowkit_windows.h>
+#include <QWKCore/private/qwkglobal_p.h>
 
 namespace QWK {
 
@@ -68,14 +73,8 @@
         }
 
         inline void resumeWidgetEventAndDraw(QWidget *w, QEvent *event) {
-            // Friend class helping to call `event`
-            class HackedWidget : public QWidget {
-            public:
-                friend class QWK::WidgetBorderHandler;
-            };
-
             // Let the widget paint first
-            static_cast<HackedWidget *>(w)->event(event);
+            static_cast<QObject *>(w)->event(event);
 
             // 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
@@ -84,14 +83,8 @@
         }
 
         inline void resumeWindowEventAndDraw(QWindow *window, QEvent *event) {
-            // Friend class helping to call `event`
-            class HackedWindow : public QWindow {
-            public:
-                friend class QWK::WidgetBorderHandler;
-            };
-
             // Let Qt paint first
-            static_cast<HackedWindow *>(window)->event(event);
+            static_cast<QObject *>(window)->event(event);
 
             // 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.
@@ -110,8 +103,8 @@
             // When the window is inactive, there is a transparency bug in the top
             // border, and we need to extend the non-client area to the whole title
             // bar.
-            QRect frame = ctx->windowAttribute(QStringLiteral("title-bar-rect")).toRect();
-            QMargins margins{0, frame.top(), 0, 0};
+            QRect frame = ctx->windowAttribute(QStringLiteral("window-rect")).toRect();
+            QMargins margins{0, -frame.top(), 0, 0};
             ctx->setWindowAttribute(QStringLiteral("extra-margins"), QVariant::fromValue(margins));
         }
 
@@ -164,7 +157,7 @@
 
         bool eventFilter(QObject *obj, QEvent *event) override {
             Q_UNUSED(obj)
-            
+
             switch (event->type()) {
                 case QEvent::UpdateRequest: {
                     if (!isNormalWindow())

--
Gitblit v1.9.1