aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/util')
-rw-r--r--src/quick/util/qquickdeliveryagent.cpp29
-rw-r--r--src/quick/util/qquickdeliveryagent_p.h1
-rw-r--r--src/quick/util/qquickdeliveryagent_p_p.h1
3 files changed, 30 insertions, 1 deletions
diff --git a/src/quick/util/qquickdeliveryagent.cpp b/src/quick/util/qquickdeliveryagent.cpp
index a38ac410d4..3b045ed8e4 100644
--- a/src/quick/util/qquickdeliveryagent.cpp
+++ b/src/quick/util/qquickdeliveryagent.cpp
@@ -626,6 +626,21 @@ void QQuickDeliveryAgentPrivate::updateFocusItemTransform()
}
/*! \internal
+ If called during event delivery, returns the agent that is delivering the
+ event, without checking whether \a item is reachable from there.
+ Otherwise returns QQuickItemPrivate::deliveryAgent() (the delivery agent for
+ the narrowest subscene containing \a item), or \c null if \a item is \c null.
+*/
+QQuickDeliveryAgent *QQuickDeliveryAgentPrivate::currentOrItemDeliveryAgent(const QQuickItem *item)
+{
+ if (currentEventDeliveryAgent)
+ return currentEventDeliveryAgent;
+ if (item)
+ return QQuickItemPrivate::get(const_cast<QQuickItem *>(item))->deliveryAgent();
+ return nullptr;
+}
+
+/*! \internal
QQuickDeliveryAgent delivers events to a tree of Qt Quick Items, beginning
with the given root item, which is usually QQuickWindow::rootItem() but
may alternatively be embedded into a Qt Quick 3D scene or something else.
@@ -650,8 +665,20 @@ QQuickItem *QQuickDeliveryAgent::rootItem() const
}
/*! \internal
+ Returns the object that was set in setSceneTransform(): a functor that
+ transforms from scene coordinates in the parent scene to scene coordinates
+ within this DA's subscene, or \c null if none was set.
+*/
+QQuickDeliveryAgent::Transform *QQuickDeliveryAgent::sceneTransform() const
+{
+ Q_D(const QQuickDeliveryAgent);
+ return d->sceneTransform;
+}
+
+/*! \internal
QQuickDeliveryAgent takes ownership of the given \a transform, which
- encapsulates the ability to transform viewport coordinates to rootItem coordinates.
+ encapsulates the ability to transform parent scene coordinates to rootItem
+ (subscene) coordinates.
*/
void QQuickDeliveryAgent::setSceneTransform(QQuickDeliveryAgent::Transform *transform)
{
diff --git a/src/quick/util/qquickdeliveryagent_p.h b/src/quick/util/qquickdeliveryagent_p.h
index 9b73d9b9b9..df8c97b368 100644
--- a/src/quick/util/qquickdeliveryagent_p.h
+++ b/src/quick/util/qquickdeliveryagent_p.h
@@ -81,6 +81,7 @@ public:
QQuickItem *rootItem() const;
+ Transform *sceneTransform() const;
void setSceneTransform(Transform *transform);
bool event(QEvent *ev) override;
diff --git a/src/quick/util/qquickdeliveryagent_p_p.h b/src/quick/util/qquickdeliveryagent_p_p.h
index ad1eece36e..f931cfd70b 100644
--- a/src/quick/util/qquickdeliveryagent_p_p.h
+++ b/src/quick/util/qquickdeliveryagent_p_p.h
@@ -121,6 +121,7 @@ public:
static bool subsceneAgentsExist;
// QQuickDeliveryAgent::event() sets this to the one that's currently (trying to) handle the event
static QQuickDeliveryAgent *currentEventDeliveryAgent;
+ static QQuickDeliveryAgent *currentOrItemDeliveryAgent(const QQuickItem *item);
Qt::FocusReason lastFocusReason = Qt::OtherFocusReason;
int pointerEventRecursionGuard = 0;