From f963da1b4099d1bcadae6f8d8669937c3a9ad0f1 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周五, 29 12月 2023 09:14:59 +0800
Subject: [PATCH] Add object helper

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

diff --git a/src/widgets/widgetwindowagent_win.cpp b/src/widgets/widgetwindowagent_win.cpp
index d53bec5..0f4637d 100644
--- a/src/widgets/widgetwindowagent_win.cpp
+++ b/src/widgets/widgetwindowagent_win.cpp
@@ -5,6 +5,7 @@
 #include <QtGui/QPainter>
 
 #include <QWKCore/qwindowkit_windows.h>
+#include <QWKCore/private/qwkglobal_p.h>
 
 namespace QWK {
 
@@ -68,14 +69,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);
+            Private::ObjectHelper::sendEvent(w, 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 +79,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);
+            Private::ObjectHelper::sendEvent(window, 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,7 +99,7 @@
             // 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();
+            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 +153,7 @@
 
         bool eventFilter(QObject *obj, QEvent *event) override {
             Q_UNUSED(obj)
-            
+
             switch (event->type()) {
                 case QEvent::UpdateRequest: {
                     if (!isNormalWindow())

--
Gitblit v1.9.1