bool MenuWindowManager::sceneEvent(QEvent* event) { switch (event->type()) { case QEvent::GestureOverride: { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QList<QGesture*> activeGestures = ge->activeGestures(); Q_FOREACH(QGesture* g, activeGestures) { if (g->hasHotSpot()) { QPointF pt = ge->mapToGraphicsScene(g->hotSpot()); if (m_systemMenuOpened || (!m_winArray.empty() && m_positiveSpace.contains(pt.x() - boundingRect().x(), pt.y() - boundingRect().y()))) { ge->accept(g); } else { ge->ignore(g); } } } break; } case QEvent::Gesture: { QGestureEvent* ge = static_cast<QGestureEvent*>(event); #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) QGesture* g = ge->gesture((Qt::GestureType) SysMgrGestureFlick); #else QGesture* g = ge->gesture(FlickGesture::gestureType()); #endif if (g && g->state() == Qt::GestureFinished) { flickGestureEvent(ge); return true; } } default: break; } return WindowManagerBase::sceneEvent(event); }
bool IMEView::sceneEvent(QEvent* event) { switch (event->type()) { case QEvent::GestureOverride: { // consume all gestures if we are handling touches QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture* g = 0; if ((g = ge->gesture(Qt::TapGesture))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } else if ((g = ge->gesture(Qt::TapAndHoldGesture))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } else if ((g = ge->gesture(Qt::PinchGesture))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureFlick))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureSingleClick))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureSingleClick))) { if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) { event->accept(); return true; } } } break; case QEvent::Gesture: { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture* g = ge->gesture(Qt::TapGesture); if (g && g->state() == Qt::GestureFinished) { tapEvent(static_cast<QTapGesture*>(g)); return true; } if (!g) { QGesture* g = ge->gesture((Qt::GestureType) SysMgrGestureScreenEdgeFlick); if (g && g->state() == Qt::GestureFinished) { screenEdgeFlickEvent(static_cast<ScreenEdgeFlickGesture*>(g)); return true; } } } break; case QEvent::TouchBegin: touchBegin(static_cast<QTouchEvent*>(event)); return event->isAccepted(); case QEvent::TouchUpdate: touchUpdate(static_cast<QTouchEvent*>(event)); return event->isAccepted(); case QEvent::TouchEnd: touchEnd(static_cast<QTouchEvent*>(event)); return event->isAccepted(); default: break; } return QGraphicsObject::sceneEvent(event); }