diff options
Diffstat (limited to 'src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp b/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp index ec613af..159fc29 100644 --- a/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp @@ -41,9 +41,10 @@ #include "qmlgraphicsmouseregion_p.h" #include "qmlgraphicsmouseregion_p_p.h" + #include "qmlgraphicsevents_p_p.h" -#include <QGraphicsSceneMouseEvent> +#include <QGraphicsSceneMouseEvent> QT_BEGIN_NAMESPACE static const qreal DragThreshold = 5; @@ -119,6 +120,12 @@ void QmlGraphicsDrag::setYmax(qreal m) _ymax = m; } +QmlGraphicsMouseRegionPrivate::~QmlGraphicsMouseRegionPrivate() +{ + delete drag; +} + + /*! \qmlclass MouseRegion QmlGraphicsMouseRegion \brief The MouseRegion item enables simple mouse handling. @@ -339,8 +346,10 @@ void QmlGraphicsMouseRegion::mousePressEvent(QGraphicsSceneMouseEvent *event) else { d->longPress = false; d->saveEvent(event); - d->dragX = drag()->axis() & QmlGraphicsDrag::XAxis; - d->dragY = drag()->axis() & QmlGraphicsDrag::YAxis; + if (d->drag) { + d->dragX = drag()->axis() & QmlGraphicsDrag::XAxis; + d->dragY = drag()->axis() & QmlGraphicsDrag::YAxis; + } d->dragged = false; setHovered(true); d->start = event->pos(); @@ -371,7 +380,7 @@ void QmlGraphicsMouseRegion::mouseMoveEvent(QGraphicsSceneMouseEvent *event) else if (!d->hovered && contains) setHovered(true); - if (drag()->target()) { + if (d->drag && d->drag->target()) { if (!d->moved) { if (d->dragX) d->startX = drag()->target()->x(); if (d->dragY) d->startY = drag()->target()->y(); @@ -616,7 +625,9 @@ bool QmlGraphicsMouseRegion::setPressed(bool p) QmlGraphicsDrag *QmlGraphicsMouseRegion::drag() { Q_D(QmlGraphicsMouseRegion); - return &(d->drag); + if (!d->drag) + d->drag = new QmlGraphicsDrag; + return d->drag; } /*! |