From bc6e2a4231d73d6e037340af9e73f2611649faa8 Mon Sep 17 00:00:00 2001
From: SineStriker <trueful@163.com>
Date: 摹曛, 09 5月 2024 01:15:21 +0800
Subject: [PATCH] Optimize event filter forwarding

---
 src/core/qwkglobal.cpp |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/core/qwkglobal.cpp b/src/core/qwkglobal.cpp
index 617df8a..aa34606 100644
--- a/src/core/qwkglobal.cpp
+++ b/src/core/qwkglobal.cpp
@@ -10,17 +10,10 @@
 
 namespace QWK {
 
-    class HackedObject : public QObject {
-    public:
-        QObjectPrivate *d_func() const {
-            return static_cast<QObjectPrivate *>(d_ptr.data());
-        }
-    };
-
     bool forwardObjectEventFilters(QObject *currentFilter, QObject *receiver, QEvent *event) {
         // https://github.com/qt/qtbase/blob/e26a87f1ecc40bc8c6aa5b889fce67410a57a702/src/corelib/kernel/qcoreapplication.cpp#L1244
         // Send the event through the rest event filters
-        auto d = static_cast<HackedObject *>(receiver)->d_func();
+        auto d = QObjectPrivate::get(receiver);
         bool findCurrent = false;
         if (receiver != QCoreApplication::instance() && d->extraData) {
             for (qsizetype i = 0; i < d->extraData->eventFilters.size(); ++i) {
@@ -34,7 +27,7 @@
 
                 if (!obj)
                     continue;
-                if (static_cast<HackedObject *>(obj)->d_func()->threadData.loadRelaxed() !=
+                if (QObjectPrivate::get(obj)->threadData.loadRelaxed() !=
                     d->threadData.loadRelaxed()) {
                     qWarning(
                         "QCoreApplication: Object event filter cannot be in a different thread.");

--
Gitblit v1.9.1