bool EmulatedCardWindow::sceneEvent(QEvent* event) { if (isMaximized()) { if (event->type() == QEvent::GestureOverride) { event->accept(); } else if (event->type() == QEvent::Gesture) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture* g = ge->gesture(Qt::TapGesture); if (g && g->state() == Qt::GestureFinished) { QTapGesture* gt = static_cast<QTapGesture*>(g); QPoint touchPoint = mapFromScene(gt->position()).toPoint(); QRectF hitTarget = mapRectFromItem(m_keyboardButton, m_keyboardButton->boundingRect()); if (hitTarget.contains(touchPoint)) { //The tap coordinates landed on the keyboard button, so let them through //without adjusting them m_keyboardButton->simulateClick(); return true; } } } } return CardWindow::sceneEvent(event); }
bool DashboardWindowContainer::sceneEvent(QEvent* event) { if (event->type() == QEvent::GestureOverride) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); ge->accept(); return true; } else if (event->type() == QEvent::Gesture) { QGesture* g = static_cast<QGestureEvent*>(event)->gesture(Qt::TapGesture); if (g) { QTapGesture* tap = static_cast<QTapGesture*>(g); if (tap->state() == Qt::GestureFinished) { handleTap(mapFromScene(tap->position())); } return true; } if(!m_isMenu) { #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) g = static_cast<QGestureEvent*>(event)->gesture((Qt::GestureType) SysMgrGestureFlick); #else g = static_cast<QGestureEvent*>(event)->gesture(FlickGesture::gestureType()); #endif if (g) { FlickGesture* flick = static_cast<FlickGesture*>(g); if (flick->state() == Qt::GestureFinished) { bool flick_delete = abs(flick->velocity().x()) > abs(flick->velocity().y()); if (flick_delete) { if (DashboardWindow* w = m_draggedWindow.data()) { m_draggedWindow.clear(); if (!w->persistent()) { m_seenFlick = true; triggerItemDelete(w); } } } } return true; } } } else if (event->type() == QEvent::TouchBegin) { return true; } else if (event->type() == QEvent::TouchUpdate) { return true; } else if (event->type() == QEvent::TouchEnd){ return true; } return QGraphicsObject::sceneEvent(event); }