Merge pull request #14910 from Snuffleupagus/adjustScaleWidth-animationStarted

Ensure that setting the width of the zoom dropdown works correctly (PR 14028 follow-up)
This commit is contained in:
Tim van der Meij 2022-05-14 13:29:15 +02:00 committed by GitHub
commit b5f2bd8bfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -170,7 +170,7 @@ class Toolbar {
this.eventBus._on("localized", () => { this.eventBus._on("localized", () => {
this._wasLocalized = true; this._wasLocalized = true;
this._adjustScaleWidth(); this.#adjustScaleWidth();
this._updateUIState(true); this._updateUIState(true);
}); });
} }
@ -237,9 +237,8 @@ class Toolbar {
/** /**
* Increase the width of the zoom dropdown DOM element if, and only if, it's * Increase the width of the zoom dropdown DOM element if, and only if, it's
* too narrow to fit the *longest* of the localized strings. * too narrow to fit the *longest* of the localized strings.
* @private
*/ */
async _adjustScaleWidth() { async #adjustScaleWidth() {
const { items, l10n } = this; const { items, l10n } = this;
const predefinedValuesPromise = Promise.all([ const predefinedValuesPromise = Promise.all([
@ -248,6 +247,7 @@ class Toolbar {
l10n.get("page_scale_fit"), l10n.get("page_scale_fit"),
l10n.get("page_scale_width"), l10n.get("page_scale_width"),
]); ]);
await animationStarted;
const style = getComputedStyle(items.scaleSelect), const style = getComputedStyle(items.scaleSelect),
scaleSelectContainerWidth = parseInt( scaleSelectContainerWidth = parseInt(
@ -260,10 +260,8 @@ class Toolbar {
); );
// The temporary canvas is used to measure text length in the DOM. // The temporary canvas is used to measure text length in the DOM.
let canvas = document.createElement("canvas"); const canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d", { alpha: false }); const ctx = canvas.getContext("2d", { alpha: false });
await animationStarted;
ctx.font = `${style.fontSize} ${style.fontFamily}`; ctx.font = `${style.fontSize} ${style.fontFamily}`;
let maxWidth = 0; let maxWidth = 0;
@ -283,7 +281,6 @@ class Toolbar {
// immediately, which can greatly reduce memory consumption. // immediately, which can greatly reduce memory consumption.
canvas.width = 0; canvas.width = 0;
canvas.height = 0; canvas.height = 0;
canvas = ctx = null;
} }
} }