diff options
Diffstat (limited to 'src/declarative/canvas/qsimplecanvas_graphicsview.cpp')
-rw-r--r-- | src/declarative/canvas/qsimplecanvas_graphicsview.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/declarative/canvas/qsimplecanvas_graphicsview.cpp b/src/declarative/canvas/qsimplecanvas_graphicsview.cpp index 0f80128..e3cdf19 100644 --- a/src/declarative/canvas/qsimplecanvas_graphicsview.cpp +++ b/src/declarative/canvas/qsimplecanvas_graphicsview.cpp @@ -88,21 +88,54 @@ QRectF QSimpleGraphicsItem::boundingRect() const void QSimpleGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { + QSimpleCanvasItem *p = owner->parent(); + while(p) { + if(p->options() & QSimpleCanvasItem::ChildMouseFilter) { + if(p->mouseFilter(event)) + return; + } + p = p->parent(); + } owner->mousePressEvent(event); } void QSimpleGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { + QSimpleCanvasItem *p = owner->parent(); + while(p) { + if(p->options() & QSimpleCanvasItem::ChildMouseFilter) { + if(p->mouseFilter(event)) + return; + } + p = p->parent(); + } owner->mouseReleaseEvent(event); + ungrabMouse(); } void QSimpleGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { + QSimpleCanvasItem *p = owner->parent(); + while(p) { + if(p->options() & QSimpleCanvasItem::ChildMouseFilter) { + if(p->mouseFilter(event)) + return; + } + p = p->parent(); + } owner->mouseDoubleClickEvent(event); } void QSimpleGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { + QSimpleCanvasItem *p = owner->parent(); + while(p) { + if(p->options() & QSimpleCanvasItem::ChildMouseFilter) { + if(p->mouseFilter(event)) + return; + } + p = p->parent(); + } owner->mouseMoveEvent(event); } |