diff options
Diffstat (limited to 'src/quick/handlers/qquickpointerhandler.cpp')
-rw-r--r-- | src/quick/handlers/qquickpointerhandler.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/handlers/qquickpointerhandler.cpp b/src/quick/handlers/qquickpointerhandler.cpp index 4539aa221c..33c2acebe2 100644 --- a/src/quick/handlers/qquickpointerhandler.cpp +++ b/src/quick/handlers/qquickpointerhandler.cpp @@ -310,9 +310,15 @@ QPointF QQuickPointerHandler::eventPos(const QQuickEventPoint *point) const bool QQuickPointerHandler::parentContains(const QQuickEventPoint *point) const { - if (point) { - if (QQuickItem *par = parentItem()) - return par->contains(par->mapFromScene(point->scenePosition())); + if (!point) + return false; + if (QQuickItem *par = parentItem()) { + if (par->window()) { + QPoint screenPosition = par->window()->mapToGlobal(point->scenePosition().toPoint()); + if (!par->window()->geometry().contains(screenPosition)) + return false; + } + return par->contains(par->mapFromScene(point->scenePosition())); } return false; } |