diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 060ff46..16db8cd 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -2631,6 +2631,7 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa #ifndef QT_NO_GESTURES #if !defined(Q_WS_WINCE) || defined(QT_WINCE_GESTURES) case WM_GESTURE: { + qDebug() << __FUNCTION__ << "received WM_GESTURE"; GESTUREINFO gi; memset(&gi, 0, sizeof(GESTUREINFO)); gi.cbSize = sizeof(GESTUREINFO); @@ -3969,6 +3970,7 @@ bool QETWidget::translateCloseEvent(const MSG &) bool QETWidget::translateGestureEvent(const MSG &, const GESTUREINFO &gi) { const QPoint widgetPos = QPoint(gi.ptsLocation.x, gi.ptsLocation.y); + QWidget *alienWidget = !internalWinId() ? this : childAt(widgetPos); if (alienWidget && alienWidget->internalWinId()) alienWidget = 0; @@ -4000,6 +4002,7 @@ bool QETWidget::translateGestureEvent(const MSG &, const GESTUREINFO &gi) default: break; } + qDebug() << __FUNCTION__ << widget << widgetPos << event.gestureType; if (event.gestureType != QNativeGestureEvent::None) qt_sendSpontaneousEvent(widget, &event); return true; diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index 3d21e77..3aafac5 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -82,6 +82,7 @@ QGestureManager::QGestureManager(QObject *parent) registerGestureRecognizer(new QMacPanGestureRecognizer); #endif #else + qDebug() << __FUNCTION__ << "Pan/Pinch/Swipe/Tap"; registerGestureRecognizer(new QPanGestureRecognizer); registerGestureRecognizer(new QPinchGestureRecognizer); registerGestureRecognizer(new QSwipeGestureRecognizer); @@ -109,6 +110,7 @@ QGestureManager::~QGestureManager() Qt::GestureType QGestureManager::registerGestureRecognizer(QGestureRecognizer *recognizer) { + qDebug() << __FUNCTION__ << recognizer; QGesture *dummy = recognizer->create(0); if (!dummy) { qWarning("QGestureManager::registerGestureRecognizer: " diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp index 98fdfb4..b29a922 100644 --- a/src/gui/kernel/qstandardgestures.cpp +++ b/src/gui/kernel/qstandardgestures.cpp @@ -54,6 +54,7 @@ QT_BEGIN_NAMESPACE QPanGestureRecognizer::QPanGestureRecognizer() { + qDebug() << __FUNCTION__; } QGesture *QPanGestureRecognizer::create(QObject *target) @@ -64,7 +65,7 @@ QGesture *QPanGestureRecognizer::create(QObject *target) if (!qobject_cast(target->parent())) static_cast(target)->setAttribute(Qt::WA_AcceptTouchEvents); #else - static_cast(target)->setAttribute(Qt::WA_AcceptTouchEvents); + static_cast(target)->setAttribute(Qt::WA_AcceptTouchEvents); #endif } return new QPanGesture; @@ -85,10 +86,12 @@ QGestureRecognizer::Result QPanGestureRecognizer::recognize(QGesture *state, result = QGestureRecognizer::MayBeGesture; QTouchEvent::TouchPoint p = ev->touchPoints().at(0); d->lastOffset = d->offset = QPointF(); + qDebug() << __FUNCTION__ << "QEvent::TouchBegin"; break; } case QEvent::TouchEnd: { if (q->state() != Qt::NoGesture) { + qDebug() << __FUNCTION__ << "QEvent::TouchEnd" << ev->touchPoints().size(); if (ev->touchPoints().size() == 2) { QTouchEvent::TouchPoint p1 = ev->touchPoints().at(0); QTouchEvent::TouchPoint p2 = ev->touchPoints().at(1); @@ -104,6 +107,7 @@ QGestureRecognizer::Result QPanGestureRecognizer::recognize(QGesture *state, break; } case QEvent::TouchUpdate: { + qDebug() << __FUNCTION__ << "QEvent::TouchUpdate" << ev->touchPoints().size(); if (ev->touchPoints().size() >= 2) { QTouchEvent::TouchPoint p1 = ev->touchPoints().at(0); QTouchEvent::TouchPoint p2 = ev->touchPoints().at(1); diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index de7a4a1..f1d6689 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -10749,6 +10749,14 @@ static void setAttribute_internal(Qt::WidgetAttribute attribute, bool on, QWidge */ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) { + if (on && attribute == Qt::WA_AcceptTouchEvents) { + + qDebug() << this << __FUNCTION__; + if (!qgetenv("NO_TOUCH").isEmpty()) { + qDebug("Refusing touch"); + return; + } + } if (testAttribute(attribute) == on) return; diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 1ab76c7..ba7414e 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -496,9 +496,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO q->setAttribute(Qt::WA_WState_Created); // accept move/resize events hd = 0; // no display context + qDebug() << "Qt::WA_AcceptTouchEvents: "<< q << q->testAttribute(Qt::WA_AcceptTouchEvents); if (q->testAttribute(Qt::WA_AcceptTouchEvents)) registerTouchWindow(); + if (window) { // got window from outside if (IsWindowVisible(window)) q->setAttribute(Qt::WA_WState_Visible); @@ -2122,6 +2124,7 @@ void QWidgetPrivate::winSetupGestures() { #if !defined(QT_NO_GESTURES) && !defined(QT_NO_NATIVE_GESTURES) Q_Q(QWidget); + qDebug() << __FUNCTION__ << q; if (!q || !q->isVisible() || !nativeGesturePanEnabled) return; @@ -2169,6 +2172,7 @@ void QWidgetPrivate::winSetupGestures() } else { gc[0].dwBlock = GC_PAN; } + qDebug() << __FUNCTION__ << "SetGestureConfig" << winid << gc[0].dwWant <SetGestureConfig(winid, 0, sizeof(gc)/sizeof(gc[0]), gc, sizeof(gc[0])); } diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp index 25bcb11..56fb18b 100644 --- a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp +++ b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp @@ -44,6 +44,7 @@ #include "qevent.h" #include "qgraphicsitem.h" #include "qgesture.h" +#include #include "private/qgesture_p.h" #include "private/qevent_p.h" @@ -58,10 +59,12 @@ QT_BEGIN_NAMESPACE QWinNativePanGestureRecognizer::QWinNativePanGestureRecognizer() { + qDebug() << __FUNCTION__ ; } QGesture *QWinNativePanGestureRecognizer::create(QObject *target) { + qDebug() << __FUNCTION__<< target; if (!target) return new QPanGesture; // a special case if (!target->isWidgetType()) @@ -73,6 +76,7 @@ QGesture *QWinNativePanGestureRecognizer::create(QObject *target) QWidgetPrivate *d = q->d_func(); d->nativeGesturePanEnabled = true; d->winSetupGestures(); + qDebug() << __FUNCTION__<< "Creating"; return new QPanGesture; } @@ -92,6 +96,7 @@ QGestureRecognizer::Result QWinNativePanGestureRecognizer::recognize(QGesture *s break; case QNativeGestureEvent::Pan: result = QGestureRecognizer::TriggerGesture; + qDebug() << __FUNCTION__<< "Pan triggered"; event->accept(); break; case QNativeGestureEvent::GestureEnd: @@ -111,11 +116,14 @@ QGestureRecognizer::Result QWinNativePanGestureRecognizer::recognize(QGesture *s ev->position.y() - d->startPosition.y()); } } + if (result!= QGestureRecognizer::Ignore) + qDebug() << __FUNCTION__<< result; return result; } void QWinNativePanGestureRecognizer::reset(QGesture *state) { + qDebug() << __FUNCTION__; QPanGesture *pan = static_cast(state); QPanGesturePrivate *d = pan->d_func();