diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2020-07-27 18:58:35 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2020-12-02 10:56:22 +1000 |
commit | 7ba6ce9ed5c3e3a775f5ea2fcbbbc1f628e0624a (patch) | |
tree | 92e10634aea526f53ee0a450caf1b15351c89a06 | |
parent | b6d88552c0f1bb93184317b785d0dc43dec5d75b (diff) |
wasm: fix mouse double click
Two issues here, timestamp value was getting smashed, and
MouseButtonDblClick was not getting sent.
Fixes: QTBUG-85712
Change-Id: I912e968f1eb0fb9c6f4cf8548b114e23d182396e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
(cherry picked from commit f785849768981a1fcfc778f2f593b9e564e784a8)
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.cpp | 16 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmeventtranslator.h | 10 |
2 files changed, 21 insertions, 5 deletions
diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index 12bee015e7..41ece2ccf4 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -330,10 +330,18 @@ QWasmEventTranslator::QWasmEventTranslator(QWasmScreen *screen) , pressedButtons(Qt::NoButton) , resizeMode(QWasmWindow::ResizeNone) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + touchDevice = new QPointingDevice("touchscreen", 1, QInputDevice::DeviceType::TouchScreen, + QPointingDevice::PointerType::Finger, + QPointingDevice::Capability::Position | QPointingDevice::Capability::Area | QPointingDevice::Capability::NormalizedPosition, + 10, 0); + QWindowSystemInterface::registerInputDevice(touchDevice); +#else touchDevice = new QTouchDevice; touchDevice->setType(QTouchDevice::TouchScreen); touchDevice->setCapabilities(QTouchDevice::Position | QTouchDevice::Area | QTouchDevice::NormalizedPosition); QWindowSystemInterface::registerTouchDevice(touchDevice); +#endif initEventHandlers(); } @@ -567,7 +575,6 @@ void resizeWindow(QWindow *window, QWasmWindow::ResizeMode mode, void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEvent *mouseEvent) { - auto timestamp = emscripten_date_now(); QPoint targetPoint(mouseEvent->targetX, mouseEvent->targetY); QPoint globalPoint = screen()->geometry().topLeft() + targetPoint; @@ -636,6 +643,8 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven if (oldWindow) oldWindow->injectMouseReleased(localPoint, globalPoint, button, modifiers); + else + htmlWindow->injectMouseReleased(localPoint, globalPoint, button, modifiers); break; } case EMSCRIPTEN_EVENT_MOUSEMOVE: // drag event @@ -668,7 +677,7 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven } if (window2 && interior) { QWindowSystemInterface::handleMouseEvent<QWindowSystemInterface::SynchronousDelivery>( - window2, timestamp, localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); + window2, getTimestamp(), localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); } } @@ -702,7 +711,6 @@ int QWasmEventTranslator::wheel_cb(int eventType, const EmscriptenWheelEvent *wh QWasmEventTranslator *translator = (QWasmEventTranslator*)userData; Qt::KeyboardModifiers modifiers = translator->translateMouseEventModifier(&mouseEvent); - auto timestamp = emscripten_date_now(); QPoint targetPoint(mouseEvent.targetX, mouseEvent.targetY); QPoint globalPoint = eventTranslator->screen()->geometry().topLeft() + targetPoint; @@ -716,7 +724,7 @@ int QWasmEventTranslator::wheel_cb(int eventType, const EmscriptenWheelEvent *wh if (wheelEvent->deltaY != 0) pixelDelta.setY(wheelEvent->deltaY * scrollFactor); if (wheelEvent->deltaX != 0) pixelDelta.setX(wheelEvent->deltaX * scrollFactor); - QWindowSystemInterface::handleWheelEvent(window2, timestamp, localPoint, + QWindowSystemInterface::handleWheelEvent(window2, getTimestamp(), localPoint, globalPoint, QPoint(), pixelDelta, modifiers); QWasmEventDispatcher::maintainTimers(); diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.h b/src/plugins/platforms/wasm/qwasmeventtranslator.h index 0be5612ef1..93a074a51e 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.h +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.h @@ -35,7 +35,11 @@ #include <QtCore/qpoint.h> #include <emscripten/html5.h> #include "qwasmwindow.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include <QtGui/qinputdevice.h> +#else #include <QtGui/qtouchdevice.h> +#endif #include <QHash> #include <QCursor> @@ -90,8 +94,12 @@ private: QWasmWindow::ResizeMode resizeMode; QPoint resizePoint; QRect resizeStartRect; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QPointingDevice *touchDevice; +#else QTouchDevice *touchDevice; - quint64 getTimestamp(); +#endif + static quint64 getTimestamp(); Qt::Key m_emDeadKey = Qt::Key_unknown; bool m_emStickyDeadKey = false; |