summaryrefslogtreecommitdiffstats
path: root/src/declarative/canvas/qsimplecanvas_graphicsview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/canvas/qsimplecanvas_graphicsview.cpp')
-rw-r--r--src/declarative/canvas/qsimplecanvas_graphicsview.cpp33
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);
}