summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsscene.cpp
diff options
context:
space:
mode:
authorAlexis Menard <alexis.menard@nokia.com>2009-10-05 08:20:38 (GMT)
committerAlexis Menard <alexis.menard@nokia.com>2009-10-05 08:42:10 (GMT)
commit10dba674d366260589f3b742e5b1b87ce9ddd47c (patch)
treeded3feb9a219dba8f204d0015d2e44ef7114db20 /src/gui/graphicsview/qgraphicsscene.cpp
parentd1d661a1858e28befe5980c22009702f5ea82829 (diff)
downloadQt-10dba674d366260589f3b742e5b1b87ce9ddd47c.zip
Qt-10dba674d366260589f3b742e5b1b87ce9ddd47c.tar.gz
Qt-10dba674d366260589f3b742e5b1b87ce9ddd47c.tar.bz2
Make QEventTransition works with QGraphicsObject.
QStateMachine framework installs QObject event filters to catch events in order to triggers the proper transition. But installing a QObject event filter on a QGraphicsObject gives nothing because QGraphicsView events filters works differently. In order to make this works we now post events using QApplication::postEvent in addition to the QGraphicsView events. Reviewed-by:andreas
Diffstat (limited to 'src/gui/graphicsview/qgraphicsscene.cpp')
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 1226722..961f44f 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -254,6 +254,8 @@
QT_BEGIN_NAMESPACE
+bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event);
+
static void _q_hoverFromMouseEvent(QGraphicsSceneHoverEvent *hover, const QGraphicsSceneMouseEvent *mouseEvent)
{
hover->setWidget(mouseEvent->widget());
@@ -1051,7 +1053,15 @@ bool QGraphicsScenePrivate::sendEvent(QGraphicsItem *item, QEvent *event)
return false;
if (filterDescendantEvent(item, event))
return false;
- return (item && item->isEnabled() ? item->sceneEvent(event) : false);
+ if (!item || !item->isEnabled())
+ return false;
+ if (QGraphicsObject *o = item->toGraphicsObject()) {
+ bool spont = event->spontaneous();
+ if (spont ? qt_sendSpontaneousEvent(o, event) : QApplication::sendEvent(o, event))
+ return true;
+ event->spont = spont;
+ }
+ return item->sceneEvent(event);
}
/*!