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