aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/items/qsgitem.cpp
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2011-06-09 18:29:50 +1000
committerAndrew den Exter <andrew.den-exter@nokia.com>2011-06-09 18:29:50 +1000
commit73081387d84c4b77dafeda927d1fc1ebee6cfdf2 (patch)
treece963197bc30cd034f7ddba95980ce300486bf6d /src/declarative/items/qsgitem.cpp
parent206a299923ca985b9ab8b47550f55a74f5473157 (diff)
Add a DragTarget element.
Provides an area that can be used to handle events when other items are dragged over it. Task-number: QMLNG-32
Diffstat (limited to 'src/declarative/items/qsgitem.cpp')
-rw-r--r--src/declarative/items/qsgitem.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/declarative/items/qsgitem.cpp b/src/declarative/items/qsgitem.cpp
index f2d26955aa..328da16ff4 100644
--- a/src/declarative/items/qsgitem.cpp
+++ b/src/declarative/items/qsgitem.cpp
@@ -45,6 +45,7 @@
#include "qsgcanvas.h"
#include <QtScript/qscriptengine.h>
#include "qsgcanvas_p.h"
+#include "qsgevent.h"
#include "qsgevents_p_p.h"
@@ -1689,6 +1690,26 @@ void QSGItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
}
+void QSGItem::dragMoveEvent(QSGDragEvent *event)
+{
+ event->setAccepted(false);
+}
+
+void QSGItem::dragEnterEvent(QSGDragEvent *event)
+{
+ event->setAccepted(false);
+}
+
+void QSGItem::dragExitEvent(QSGDragEvent *event)
+{
+ event->setAccepted(false);
+}
+
+void QSGItem::dragDropEvent(QSGDragEvent *event)
+{
+ event->setAccepted(false);
+}
+
bool QSGItem::childMouseEventFilter(QSGItem *, QEvent *)
{
return false;
@@ -2151,6 +2172,27 @@ void QSGItemPrivate::deliverHoverEvent(QGraphicsSceneHoverEvent *e)
}
}
+void QSGItemPrivate::deliverDragEvent(QSGDragEvent *e)
+{
+ Q_Q(QSGItem);
+ switch (e->type()) {
+ default:
+ Q_ASSERT(!"Unknown event type");
+ case QSGEvent::SGDragEnter:
+ q->dragEnterEvent(e);
+ break;
+ case QSGEvent::SGDragExit:
+ q->dragExitEvent(e);
+ break;
+ case QSGEvent::SGDragMove:
+ q->dragMoveEvent(e);
+ break;
+ case QSGEvent::SGDragDrop:
+ q->dragDropEvent(e);
+ break;
+ }
+}
+
void QSGItem::itemChange(ItemChange change, const ItemChangeData &value)
{
Q_UNUSED(change);