diff --git a/src/plugins/platforms/wasm/qwasmscreen.cpp b/src/plugins/platforms/wasm/qwasmscreen.cpp index 11bb57a1ab..51020c45bf 100644 --- a/src/plugins/platforms/wasm/qwasmscreen.cpp +++ b/src/plugins/platforms/wasm/qwasmscreen.cpp @@ -226,14 +226,15 @@ void QWasmScreen::updateQScreenAndCanvasRenderSize() m_canvas.set("width", canvasSize.width()); m_canvas.set("height", canvasSize.height()); - QPoint offset; - offset.setX(m_canvas["offsetLeft"].as()); - offset.setY(m_canvas["offsetTop"].as()); + // Returns the html elments document/body position + auto getElementBodyPosition = [](const emscripten::val &element) -> QPoint { + emscripten::val bodyRect = element["ownerDocument"]["body"].call("getBoundingClientRect"); + emscripten::val canvasRect = element.call("getBoundingClientRect"); + return QPoint (canvasRect["left"].as() - bodyRect["left"].as(), + canvasRect["top"].as() - bodyRect["top"].as()); + }; - emscripten::val rect = m_canvas.call("getBoundingClientRect"); - QPoint position(rect["left"].as() - offset.x(), rect["top"].as() - offset.y()); - - setGeometry(QRect(position, cssSize.toSize())); + setGeometry(QRect(getElementBodyPosition(m_canvas), cssSize.toSize())); m_compositor->requestUpdateAllWindows(); }