aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2012-02-16 13:45:40 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-17 04:28:35 +0100
commit2c21a3a61f5e6477e637d25d822643db18c67873 (patch)
treee5df2701415ac8a45bb8038ef6a9b67ba5df8afc /src
parentacc54f9c0a6367edddb1fb2bba40b3341f9b384c (diff)
Provide visual debugging for MouseArea and TouchArea
Display MouseAreas and TouchAreas as semi transparent rectangles when the environment variable QML_VISUAL_TOUCH_DEBUGGING is set. Task-number: QTBUG-24283 Change-Id: Iec8482a79ed1d4b802c29a5f7104af4e0a6eab7d Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickmousearea.cpp23
-rw-r--r--src/quick/items/qquickmousearea_p.h1
-rw-r--r--src/quick/items/qquickmultipointtoucharea.cpp23
-rw-r--r--src/quick/items/qquickmultipointtoucharea_p.h1
4 files changed, 48 insertions, 0 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index cf6045e45e..b870443bc9 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -52,6 +52,9 @@
#include <float.h>
QT_BEGIN_NAMESPACE
+
+DEFINE_BOOL_CONFIG_OPTION(qmlVisualTouchDebugging, QML_VISUAL_TOUCH_DEBUGGING)
+
static const int PressAndHoldDelay = 800;
QQuickDrag::QQuickDrag(QObject *parent)
@@ -198,6 +201,9 @@ void QQuickMouseAreaPrivate::init()
Q_Q(QQuickMouseArea);
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFiltersChildMouseEvents(true);
+ if (qmlVisualTouchDebugging()) {
+ q->setFlag(QQuickItem::ItemHasContents);
+ }
}
void QQuickMouseAreaPrivate::saveEvent(QMouseEvent *event)
@@ -1165,4 +1171,21 @@ QQuickDrag *QQuickMouseArea::drag()
return d->drag;
}
+QSGNode *QQuickMouseArea::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
+{
+ Q_UNUSED(data);
+ Q_D(QQuickMouseArea);
+
+ if (!qmlVisualTouchDebugging())
+ return 0;
+
+ QSGRectangleNode *rectangle = static_cast<QSGRectangleNode *>(oldNode);
+ if (!rectangle) rectangle = d->sceneGraphContext()->createRectangleNode();
+
+ rectangle->setRect(QRectF(0, 0, width(), height()));
+ rectangle->setColor(QColor(255, 0, 0, 50));
+ rectangle->update();
+ return rectangle;
+}
+
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickmousearea_p.h b/src/quick/items/qquickmousearea_p.h
index 98034a648a..7513ca334b 100644
--- a/src/quick/items/qquickmousearea_p.h
+++ b/src/quick/items/qquickmousearea_p.h
@@ -207,6 +207,7 @@ protected:
virtual void geometryChanged(const QRectF &newGeometry,
const QRectF &oldGeometry);
virtual void itemChange(ItemChange change, const ItemChangeData& value);
+ virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
private:
void handlePress();
diff --git a/src/quick/items/qquickmultipointtoucharea.cpp b/src/quick/items/qquickmultipointtoucharea.cpp
index 32c8c386bf..766ce67e43 100644
--- a/src/quick/items/qquickmultipointtoucharea.cpp
+++ b/src/quick/items/qquickmultipointtoucharea.cpp
@@ -41,6 +41,8 @@
#include "qquickmultipointtoucharea_p.h"
#include <QtQuick/qquickcanvas.h>
+#include <private/qsgadaptationlayer_p.h>
+#include <private/qquickitem_p.h>
#include <QEvent>
#include <QMouseEvent>
#include <math.h>
@@ -48,6 +50,8 @@
QT_BEGIN_NAMESPACE
+DEFINE_BOOL_CONFIG_OPTION(qmlVisualTouchDebugging, QML_VISUAL_TOUCH_DEBUGGING)
+
/*!
\qmlclass TouchPoint QQuickTouchPoint
\inqmlmodule QtQuick 2
@@ -307,6 +311,9 @@ QQuickMultiPointTouchArea::QQuickMultiPointTouchArea(QQuickItem *parent)
{
setAcceptedMouseButtons(Qt::LeftButton);
setFiltersChildMouseEvents(true);
+ if (qmlVisualTouchDebugging()) {
+ setFlag(QQuickItem::ItemHasContents);
+ }
}
QQuickMultiPointTouchArea::~QQuickMultiPointTouchArea()
@@ -738,4 +745,20 @@ bool QQuickMultiPointTouchArea::shouldFilter(QEvent *event)
return false;
}
+QSGNode *QQuickMultiPointTouchArea::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
+{
+ Q_UNUSED(data);
+
+ if (!qmlVisualTouchDebugging())
+ return 0;
+
+ QSGRectangleNode *rectangle = static_cast<QSGRectangleNode *>(oldNode);
+ if (!rectangle) rectangle = QQuickItemPrivate::get(this)->sceneGraphContext()->createRectangleNode();
+
+ rectangle->setRect(QRectF(0, 0, width(), height()));
+ rectangle->setColor(QColor(255, 0, 0, 50));
+ rectangle->update();
+ return rectangle;
+}
+
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickmultipointtoucharea_p.h b/src/quick/items/qquickmultipointtoucharea_p.h
index b56d88bb27..e611ce3ace 100644
--- a/src/quick/items/qquickmultipointtoucharea_p.h
+++ b/src/quick/items/qquickmultipointtoucharea_p.h
@@ -251,6 +251,7 @@ protected:
bool sendMouseEvent(QMouseEvent *event);
bool shouldFilter(QEvent *event);
void grabGesture();
+ virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
private:
void ungrab();