wasm: Use the new QWasmEventHandler class

Also saves one malloc call per event handler.

Change-Id: I33a72916b101e27d2e4139ebb1dc5227b0793273
Reviewed-by: Lorn Potter <lorn.potter@qt.io>
This commit is contained in:
Morten Sørvig 2025-03-14 15:54:37 +01:00
parent 209a2145f9
commit 0eba6478ee
2 changed files with 32 additions and 32 deletions

View File

@ -121,73 +121,73 @@ QWasmWindow::QWasmWindow(QWindow *w, QWasmDeadKeySupport *deadKeySupport,
void QWasmWindow::registerEventHandlers() void QWasmWindow::registerEventHandlers()
{ {
m_pointerDownCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointerdown", m_pointerDownCallback = QWasmEventHandler(m_window, "pointerdown",
[this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerDown, event)); } [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerDown, event)); }
); );
m_pointerMoveCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointermove", m_pointerMoveCallback = QWasmEventHandler(m_window, "pointermove",
[this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerMove, event)); } [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerMove, event)); }
); );
m_pointerUpCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointerup", m_pointerUpCallback = QWasmEventHandler(m_window, "pointerup",
[this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerUp, event)); } [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerUp, event)); }
); );
m_pointerCancelCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointercancel", m_pointerCancelCallback = QWasmEventHandler(m_window, "pointercancel",
[this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerCancel, event)); } [this](emscripten::val event){ processPointer(PointerEvent(EventType::PointerCancel, event)); }
); );
m_pointerEnterCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointerenter", m_pointerEnterCallback = QWasmEventHandler(m_window, "pointerenter",
[this](emscripten::val event) { this->handlePointerEnterLeaveEvent(PointerEvent(EventType::PointerEnter, event)); } [this](emscripten::val event) { this->handlePointerEnterLeaveEvent(PointerEvent(EventType::PointerEnter, event)); }
); );
m_pointerLeaveCallback = std::make_unique<qstdweb::EventCallback>(m_window, "pointerleave", m_pointerLeaveCallback = QWasmEventHandler(m_window, "pointerleave",
[this](emscripten::val event) { this->handlePointerEnterLeaveEvent(PointerEvent(EventType::PointerLeave, event)); } [this](emscripten::val event) { this->handlePointerEnterLeaveEvent(PointerEvent(EventType::PointerLeave, event)); }
); );
m_window.call<void>("setAttribute", emscripten::val("draggable"), emscripten::val("true")); m_window.call<void>("setAttribute", emscripten::val("draggable"), emscripten::val("true"));
m_dragStartCallback = std::make_unique<qstdweb::EventCallback>(m_window, "dragstart", m_dragStartCallback = QWasmEventHandler(m_window, "dragstart",
[this](emscripten::val event) { [this](emscripten::val event) {
DragEvent dragEvent(EventType::DragStart, event, window()); DragEvent dragEvent(EventType::DragStart, event, window());
QWasmDrag::instance()->onNativeDragStarted(&dragEvent); QWasmDrag::instance()->onNativeDragStarted(&dragEvent);
} }
); );
m_dragOverCallback = std::make_unique<qstdweb::EventCallback>(m_window, "dragover", m_dragOverCallback = QWasmEventHandler(m_window, "dragover",
[this](emscripten::val event) { [this](emscripten::val event) {
DragEvent dragEvent(EventType::DragOver, event, window()); DragEvent dragEvent(EventType::DragOver, event, window());
QWasmDrag::instance()->onNativeDragOver(&dragEvent); QWasmDrag::instance()->onNativeDragOver(&dragEvent);
} }
); );
m_dropCallback = std::make_unique<qstdweb::EventCallback>(m_window, "drop", m_dropCallback = QWasmEventHandler(m_window, "drop",
[this](emscripten::val event) { [this](emscripten::val event) {
DragEvent dragEvent(EventType::Drop, event, window()); DragEvent dragEvent(EventType::Drop, event, window());
QWasmDrag::instance()->onNativeDrop(&dragEvent); QWasmDrag::instance()->onNativeDrop(&dragEvent);
} }
); );
m_dragEndCallback = std::make_unique<qstdweb::EventCallback>(m_window, "dragend", m_dragEndCallback = QWasmEventHandler(m_window, "dragend",
[this](emscripten::val event) { [this](emscripten::val event) {
DragEvent dragEvent(EventType::DragEnd, event, window()); DragEvent dragEvent(EventType::DragEnd, event, window());
QWasmDrag::instance()->onNativeDragFinished(&dragEvent); QWasmDrag::instance()->onNativeDragFinished(&dragEvent);
} }
); );
m_dragLeaveCallback = std::make_unique<qstdweb::EventCallback>(m_window, "dragleave", m_dragLeaveCallback = QWasmEventHandler(m_window, "dragleave",
[this](emscripten::val event) { [this](emscripten::val event) {
DragEvent dragEvent(EventType::DragLeave, event, window()); DragEvent dragEvent(EventType::DragLeave, event, window());
QWasmDrag::instance()->onNativeDragLeave(&dragEvent); QWasmDrag::instance()->onNativeDragLeave(&dragEvent);
} }
); );
m_wheelEventCallback = std::make_unique<qstdweb::EventCallback>( m_window, "wheel", m_wheelEventCallback = QWasmEventHandler(m_window, "wheel",
[this](emscripten::val event) { this->handleWheelEvent(event); }); [this](emscripten::val event) { this->handleWheelEvent(event); });
QWasmInputContext *wasmInput = QWasmIntegration::get()->wasmInputContext(); QWasmInputContext *wasmInput = QWasmIntegration::get()->wasmInputContext();
if (wasmInput) { if (wasmInput) {
m_keyDownCallbackForInputContext = m_keyDownCallbackForInputContext =
std::make_unique<qstdweb::EventCallback>(wasmInput->m_inputElement, "keydown", QWasmEventHandler(wasmInput->m_inputElement, "keydown",
[this](emscripten::val event) { this->handleKeyForInputContextEvent(EventType::KeyDown, event); }); [this](emscripten::val event) { this->handleKeyForInputContextEvent(EventType::KeyDown, event); });
m_keyUpCallbackForInputContext = m_keyUpCallbackForInputContext =
std::make_unique<qstdweb::EventCallback>(wasmInput->m_inputElement, "keyup", QWasmEventHandler(wasmInput->m_inputElement, "keyup",
[this](emscripten::val event) { this->handleKeyForInputContextEvent(EventType::KeyUp, event); }); [this](emscripten::val event) { this->handleKeyForInputContextEvent(EventType::KeyUp, event); });
} }
m_keyDownCallback = std::make_unique<qstdweb::EventCallback>(m_window, "keydown", m_keyDownCallback = QWasmEventHandler(m_window, "keydown",
[this](emscripten::val event) { this->handleKeyEvent(KeyEvent(EventType::KeyDown, event, m_deadKeySupport)); }); [this](emscripten::val event) { this->handleKeyEvent(KeyEvent(EventType::KeyDown, event, m_deadKeySupport)); });
m_keyUpCallback =std::make_unique<qstdweb::EventCallback>(m_window, "keyup", m_keyUpCallback =QWasmEventHandler(m_window, "keyup",
[this](emscripten::val event) {this->handleKeyEvent(KeyEvent(EventType::KeyUp, event, m_deadKeySupport)); }); [this](emscripten::val event) {this->handleKeyEvent(KeyEvent(EventType::KeyUp, event, m_deadKeySupport)); });
} }

View File

@ -151,25 +151,25 @@ private:
QWasmWindowTreeNode *m_commitedParent = nullptr; QWasmWindowTreeNode *m_commitedParent = nullptr;
std::unique_ptr<qstdweb::EventCallback> m_keyDownCallback; QWasmEventHandler m_keyDownCallback;
std::unique_ptr<qstdweb::EventCallback> m_keyUpCallback; QWasmEventHandler m_keyUpCallback;
std::unique_ptr<qstdweb::EventCallback> m_keyDownCallbackForInputContext; QWasmEventHandler m_keyDownCallbackForInputContext;
std::unique_ptr<qstdweb::EventCallback> m_keyUpCallbackForInputContext; QWasmEventHandler m_keyUpCallbackForInputContext;
std::unique_ptr<qstdweb::EventCallback> m_pointerDownCallback; QWasmEventHandler m_pointerDownCallback;
std::unique_ptr<qstdweb::EventCallback> m_pointerMoveCallback; QWasmEventHandler m_pointerMoveCallback;
std::unique_ptr<qstdweb::EventCallback> m_pointerUpCallback; QWasmEventHandler m_pointerUpCallback;
std::unique_ptr<qstdweb::EventCallback> m_pointerCancelCallback; QWasmEventHandler m_pointerCancelCallback;
std::unique_ptr<qstdweb::EventCallback> m_pointerLeaveCallback; QWasmEventHandler m_pointerLeaveCallback;
std::unique_ptr<qstdweb::EventCallback> m_pointerEnterCallback; QWasmEventHandler m_pointerEnterCallback;
std::unique_ptr<qstdweb::EventCallback> m_dragOverCallback; QWasmEventHandler m_dragOverCallback;
std::unique_ptr<qstdweb::EventCallback> m_dragStartCallback; QWasmEventHandler m_dragStartCallback;
std::unique_ptr<qstdweb::EventCallback> m_dragEndCallback; QWasmEventHandler m_dragEndCallback;
std::unique_ptr<qstdweb::EventCallback> m_dropCallback; QWasmEventHandler m_dropCallback;
std::unique_ptr<qstdweb::EventCallback> m_dragLeaveCallback; QWasmEventHandler m_dragLeaveCallback;
std::unique_ptr<qstdweb::EventCallback> m_wheelEventCallback; QWasmEventHandler m_wheelEventCallback;
QMap<int, QWindowSystemInterface::TouchPoint> m_pointerIdToTouchPoints; QMap<int, QWindowSystemInterface::TouchPoint> m_pointerIdToTouchPoints;