diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-11-16 12:30:59 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-11-17 06:21:05 +0100 |
commit | 496c977b43b131c6bf315cc030c21023b60e2661 (patch) | |
tree | db381a102edf35b18ccc90ee2952c21212cbc224 /src/corelib/kernel/qcoreevent.h | |
parent | 26866440823ffd0796755bc04eb3f298b73f3f16 (diff) |
Allow cloning of event objects
We have use cases for cloning of events, e.g. in the state machine and
for event propagation.
Provide the means to do so through a virtual method.
Adapt QFutureCallOutEvent::clone, which is now an override. No code
seems to be using that method.
Change-Id: I6864d6597f6de800343c4dc458a7994e84dc6fb4
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/corelib/kernel/qcoreevent.h')
-rw-r--r-- | src/corelib/kernel/qcoreevent.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h index edd67b79d3..23503dee05 100644 --- a/src/corelib/kernel/qcoreevent.h +++ b/src/corelib/kernel/qcoreevent.h @@ -313,6 +313,8 @@ public: static int registerEventType(int hint = -1) noexcept; + virtual QEvent *clone() const; + protected: struct InputEventTag { explicit InputEventTag() = default; }; QEvent(Type type, InputEventTag) : QEvent(type) { m_inputEvent = true; } @@ -362,6 +364,8 @@ public: ~QTimerEvent(); int timerId() const { return id; } + QEvent *clone() const override { return new QTimerEvent(*this); }; + protected: int id; }; @@ -378,6 +382,8 @@ public: bool polished() const { return type() == ChildPolished; } bool removed() const { return type() == ChildRemoved; } + QEvent *clone() const override { return new QChildEvent(*this); }; + protected: QObject *c; }; @@ -390,6 +396,8 @@ public: inline QByteArray propertyName() const { return n; } + QEvent *clone() const override { return new QDynamicPropertyChangeEvent(*this); }; + private: QByteArray n; }; @@ -401,6 +409,8 @@ public: ~QDeferredDeleteEvent(); int loopLevel() const { return level; } + QEvent *clone() const override { return new QDeferredDeleteEvent(*this); }; + private: int level; friend class QCoreApplication; |