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