qt5base-lts/tests/manual/wasm/qwasmwindow/qwasmwindow_harness.html
Mikolaj Boc fc4fca6d9d Support child windows on WASM
Setting parents for WASM platform windows is now supported. This means
that windows now reside in a hierarchical window tree, with the screen
and individual windows being nodes (QWasmWindowTreeNode), each
maintaining their own child window stack.

The divs backing windows are properly reparented in response to Qt
window parent changes, so that the html structure reflects what is
happening in Qt.

Change-Id: I55c91d90caf58714342dcd747043967ebfdf96bb
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-06-15 09:41:06 +02:00

79 lines
2.9 KiB
HTML

<!doctype html>
<head>
<script type="text/javascript" src="qwasmwindow_harness.js"></script>
<script>
(async () => {
const instance = await createQtAppInstance({});
window.instance = instance;
const testSandbox = document.createElement('div');
testSandbox.id = 'test-sandbox';
let nextScreenId = 1;
document.body.appendChild(testSandbox);
const eventList = [];
const makeSizedDiv = (left, top, width, height) => {
const screenDiv = document.createElement('div');
screenDiv.style.left = `${left}px`;
screenDiv.style.top = `${top}px`;
screenDiv.style.width = `${width}px`;
screenDiv.style.height = `${height}px`;
screenDiv.style.backgroundColor = 'lightblue';
screenDiv.id = `test-screen-${nextScreenId++}`;
return screenDiv;
};
window.testSupport = {
initializeScreenWithFixedPosition: (left, top, width, height) => {
const screenDiv = makeSizedDiv(left, top, width, height);
testSandbox.appendChild(screenDiv);
screenDiv.style.position = 'fixed';
instance.qtAddContainerElement(screenDiv);
return screenDiv;
},
initializeScreenWithRelativePosition: (left, top, width, height) => {
const screenDiv = makeSizedDiv(left, top, width, height);
testSandbox.appendChild(screenDiv);
screenDiv.style.position = 'relative';
instance.qtAddContainerElement(screenDiv);
return screenDiv;
},
initializeScreenInScrollContainer:
(scrollWidth, scrollHeight, left, top, width, height) => {
const scrollContainer = document.createElement('div');
scrollContainer.style.height = `${scrollHeight}px`;
scrollContainer.style.width = `${scrollWidth}px`;
testSandbox.appendChild(scrollContainer);
const screenDiv = makeSizedDiv(left, top, width, height);
scrollContainer.appendChild(screenDiv);
screenDiv.style.position = 'relative';
instance.qtAddContainerElement(screenDiv);
return [scrollContainer, screenDiv];
},
reportEvent: event => {
eventList.push(event);
},
events: () => eventList,
hitTestPoint: (x, y, screenId) => {
return document
.querySelector(`#${screenId}`).shadowRoot.elementsFromPoint(x, y);
}
};
})();
</script>
</head>
<body>
</body>