From 44c08f3cc456155b960ca5a115df93109d2202ce Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周三, 13 12月 2023 23:22:25 +0800
Subject: [PATCH] Remove event observer

---
 src/core/kernel/nativeeventfilter_p.h |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/src/core/kernel/nativeeventfilter_p.h b/src/core/kernel/nativeeventfilter_p.h
index b7ce167..45228df 100644
--- a/src/core/kernel/nativeeventfilter_p.h
+++ b/src/core/kernel/nativeeventfilter_p.h
@@ -5,6 +5,27 @@
 
 namespace QWK {
 
+    class NativeEventFilter;
+
+    class QWK_CORE_EXPORT NativeEventDispatcher {
+    public:
+        NativeEventDispatcher();
+        virtual ~NativeEventDispatcher();
+
+    public:
+        virtual bool dispatch(const QByteArray &eventType, void *message,
+                              QT_NATIVE_EVENT_RESULT_TYPE *result);
+
+    public:
+        void installNativeEventFilter(NativeEventFilter *filter);
+        void removeNativeEventFilter(NativeEventFilter *filter);
+
+    protected:
+        QVector<NativeEventFilter *> m_nativeEventFilters;
+
+        Q_DISABLE_COPY(NativeEventDispatcher)
+    };
+
     class QWK_CORE_EXPORT NativeEventFilter {
     public:
         NativeEventFilter();
@@ -14,8 +35,19 @@
         virtual bool nativeEventFilter(const QByteArray &eventType, void *message,
                                        QT_NATIVE_EVENT_RESULT_TYPE *result) = 0;
 
-    private:
+    protected:
+        NativeEventDispatcher *m_dispatcher;
+
         Q_DISABLE_COPY(NativeEventFilter)
+
+        friend class NativeEventDispatcher;
+    };
+
+    // Automatically install to QApplication at construction
+    class QWK_CORE_EXPORT AppNativeEventFilter : public NativeEventFilter {
+    public:
+        AppNativeEventFilter();
+        ~AppNativeEventFilter() override;
     };
 
 }

--
Gitblit v1.9.1