diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index 82dd00bb65..87d4df384a 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -329,9 +329,16 @@ 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); +#else touchDevice = new QPointingDevice; touchDevice->setType(QInputDevice::DeviceType::TouchScreen); touchDevice->setCapabilities(QPointingDevice::Capability::Position | QPointingDevice::Capability::Area | QPointingDevice::Capability::NormalizedPosition); +#endif QWindowSystemInterface::registerInputDevice(touchDevice); initEventHandlers(); @@ -566,7 +573,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; @@ -630,6 +636,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 @@ -658,7 +666,7 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEven } if (window2 && interior) { QWindowSystemInterface::handleMouseEvent( - window2, timestamp, localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); + window2, getTimestamp(), localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); } } @@ -692,7 +700,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; @@ -706,7 +713,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(); @@ -799,7 +806,7 @@ int QWasmEventTranslator::handleTouch(int eventType, const EmscriptenTouchEvent quint64 QWasmEventTranslator::getTimestamp() { - return QDeadlineTimer::current().deadlineNSecs() / 1000; + return emscripten_performance_now(); } struct KeyMapping { Qt::Key from, to; }; diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.h b/src/plugins/platforms/wasm/qwasmeventtranslator.h index b02685bedd..94a9513b69 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.h +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.h @@ -35,7 +35,11 @@ #include #include #include "qwasmwindow.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#else #include +#endif #include QT_BEGIN_NAMESPACE @@ -89,8 +93,12 @@ private: QWasmWindow::ResizeMode resizeMode; QPoint resizePoint; QRect resizeStartRect; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QPointingDevice *touchDevice; - quint64 getTimestamp(); +#else + QTouchDevice *touchDevice; +#endif + static quint64 getTimestamp(); Qt::Key m_emDeadKey = Qt::Key_unknown; bool m_emStickyDeadKey = false;