diff options
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.puml | 55 |
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 |