fc4fca6d9d
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>
79 lines
2.9 KiB
HTML
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>
|