[Editor] Ink editors must have their dimensions in percents after having been resized

This commit is contained in:
Calixte Denizet 2022-10-15 19:05:42 +02:00
parent 06599f487f
commit 9e2bc8853f
2 changed files with 33 additions and 0 deletions

View file

@ -27,6 +27,10 @@ import { opacityToHex } from "./tools.js";
// so each dimension must be greater than RESIZER_SIZE.
const RESIZER_SIZE = 16;
// Some dimensions aren't in percent and that leads to some errors
// when the page is zoomed (see #15571).
const TIME_TO_WAIT_BEFORE_FIXING_DIMS = 100;
/**
* Basic draw editor in order to generate an Ink annotation.
*/
@ -599,9 +603,20 @@ class InkEditor extends AnnotationEditor {
* Create the resize observer.
*/
#createObserver() {
let timeoutId = null;
this.#observer = new ResizeObserver(entries => {
const rect = entries[0].contentRect;
if (rect.width && rect.height) {
// Workaround for:
// https://bugzilla.mozilla.org/show_bug.cgi?id=1795536
if (timeoutId !== null) {
clearTimeout(timeoutId);
}
timeoutId = setTimeout(() => {
this.fixDims();
timeoutId = null;
}, TIME_TO_WAIT_BEFORE_FIXING_DIMS);
this.setDimensions(rect.width, rect.height);
}
});