aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/doc/src/internal/ideal-pointer-event-delivery.puml
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/doc/src/internal/ideal-pointer-event-delivery.puml')
-rw-r--r--src/quick/doc/src/internal/ideal-pointer-event-delivery.puml55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/quick/doc/src/internal/ideal-pointer-event-delivery.puml b/src/quick/doc/src/internal/ideal-pointer-event-delivery.puml
new file mode 100644
index 0000000000..1d730b6f34
--- /dev/null
+++ b/src/quick/doc/src/internal/ideal-pointer-event-delivery.puml
@@ -0,0 +1,55 @@
+\startuml
+start
+:QGuiApplicationPrivate::process[Mouse|Touch|Tablet]Event();
+:QGuiApplication::sendSpontaneousEvent();
+:ℚWindow::event();
+:ℚDeliveryAgent::event();
+partition ℚDeliveryAgentPrivate::deliverPointerEvent() {
+ if (isBeginEvent()) then (yes)
+ partition "deliverPressOrReleaseEvent()" {
+ repeat :loop over QEventPoints;
+ :ℚDeliveryAgentPrivate::pointerTargets();
+ repeat while (more?) is (yes)
+ ->no;
+ repeat :loop over targetItems;
+ :**deliverMatchingPointsToItem()**;
+ repeat while (more?) is (yes)
+ ->no;
+ }
+ endif
+ if (allUpdatedPointsAccepted()) then (no)
+ partition "deliverUpdatedPoints()" {
+ repeat :loop over exclusive grabbers;
+ if (grabber type?) then (pointer handler)
+ :ℚPointerHandler::handlePointerEvent();
+ else (Item)
+ :**deliverMatchingPointsToItem()**;
+ endif
+ repeat while (more grabbers?) is (yes)
+ repeat :loop over QEventPoints;
+ partition "deliverToPassiveGrabbers()" {
+ repeat :loop over passive grabbers;
+ if (grabber type?) then (pointer handler)
+ :ℚPointerHandler::handlePointerEvent();
+ else (Item)
+ :QCoreApplication::sendEvent(item, event);
+ endif
+ repeat while (more grabbers?) is (yes)
+ }
+ repeat while (more points?) is (yes)
+ }
+ endif
+ if (isEndEvent()) then (yes)
+ partition "deliverPressOrReleaseEvent()" {
+ repeat :loop over QEventPoints;
+ :ℚDeliveryAgentPrivate::pointerTargets();
+ repeat while (more?) is (yes)
+ ->no;
+ repeat :loop over targetItems;
+ :**deliverMatchingPointsToItem()**;
+ repeat while (more?) is (yes)
+ }
+ endif
+}
+stop
+\enduml