diff --git a/addons/web/static/src/core/position_hook.js b/addons/web/static/src/core/position_hook.js index 0d87c7e78be..01d626469ad 100644 --- a/addons/web/static/src/core/position_hook.js +++ b/addons/web/static/src/core/position_hook.js @@ -339,9 +339,11 @@ export function usePosition(target, options) { // Attach listeners to keep the positioning up to date const targetDocument = getTarget()?.ownerDocument; targetDocument?.addEventListener("scroll", throttledUpdate, { capture: true }); + targetDocument?.addEventListener("load", throttledUpdate, { capture: true }); window.addEventListener("resize", throttledUpdate); return () => { targetDocument?.removeEventListener("scroll", throttledUpdate, { capture: true }); + targetDocument?.removeEventListener("load", throttledUpdate, { capture: true }); window.removeEventListener("resize", throttledUpdate); }; } diff --git a/addons/web/static/src/views/fields/image/image_field.scss b/addons/web/static/src/views/fields/image/image_field.scss index ba7dadf6d7b..01016fde7a9 100644 --- a/addons/web/static/src/views/fields/image/image_field.scss +++ b/addons/web/static/src/views/fields/image/image_field.scss @@ -22,7 +22,7 @@ .o_image_zoom { img { - max-width: 50vw; + max-width: 100%; max-height: 50vh; } } diff --git a/addons/web/static/tests/core/position_hook_tests.js b/addons/web/static/tests/core/position_hook_tests.js index 7a973d92d05..cdf987fd1af 100644 --- a/addons/web/static/tests/core/position_hook_tests.js +++ b/addons/web/static/tests/core/position_hook_tests.js @@ -333,6 +333,18 @@ QUnit.test("has no effect when component is destroyed", async (assert) => { ); }); +QUnit.test("reposition popper when a load event occurs", async (assert) => { + const TestComp = getTestComponent({ + onPositioned: () => { + assert.step("onPositioned called"); + }, + }); + await mount(TestComp, container); + assert.verifySteps(["onPositioned called"], "onPositioned called when component mounted"); + await document.querySelector('[id="popper"]').dispatchEvent(new Event("load")); + assert.verifySteps(["onPositioned called"], "onPositioned called when load event is triggered"); +}); + QUnit.test("is positioned relative to its containing block", async (assert) => { const fixtureBox = getFixture().getBoundingClientRect(); // offset the container