Remove PDFViewerApplication.updateScaleControls
(issue 6158)
*With this patch we're getting very close to fixing 6158.* The only use-case for `PDFViewerApplication.updateScaleControls` is to try and avoid calling `selectScaleOption` from the `scalechange` event handler in viewer.js. This will *only* happen when the user has manually changed the scale by using the `<select>` dropdown, which means that in reality this is just a micro optimization. Furthermore, `selectScaleOption` is only skipped for the "named" scale values (e.g. `auto`, `page-actual`, `page-fit`, `page-width`), thus further reducing the value of this code. Also, since we're updating the scale `<select>` dropdown from an event handler, we're currently depending on the event being dispatched (and handled) completely before the next `scalechange` event. Relying on the execution order of the code in this way, even though it currently works, seems unfortunate since it *could* potentially cause the internal scale value and the UI from getting out of sync.
This commit is contained in:
parent
6c1906fd53
commit
5cb15874fa
@ -109,7 +109,6 @@ var PDFViewerApplication = {
|
|||||||
/** @type {PDFHistory} */
|
/** @type {PDFHistory} */
|
||||||
pdfHistory: null,
|
pdfHistory: null,
|
||||||
pageRotation: 0,
|
pageRotation: 0,
|
||||||
updateScaleControls: true,
|
|
||||||
isInitialViewSet: false,
|
isInitialViewSet: false,
|
||||||
animationStartedPromise: null,
|
animationStartedPromise: null,
|
||||||
preferenceSidebarViewOnLoad: SidebarView.NONE,
|
preferenceSidebarViewOnLoad: SidebarView.NONE,
|
||||||
@ -1175,9 +1174,7 @@ var PDFViewerApplication = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setScale: function (value, resetAutoSettings) {
|
setScale: function (value, resetAutoSettings) {
|
||||||
this.updateScaleControls = !!resetAutoSettings;
|
|
||||||
this.pdfViewer.currentScaleValue = value;
|
this.pdfViewer.currentScaleValue = value;
|
||||||
this.updateScaleControls = true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
rotatePages: function pdfViewRotatePages(delta) {
|
rotatePages: function pdfViewRotatePages(delta) {
|
||||||
@ -1752,18 +1749,6 @@ window.addEventListener('scalechange', function scalechange(evt) {
|
|||||||
document.getElementById('zoomOut').disabled = (evt.scale === MIN_SCALE);
|
document.getElementById('zoomOut').disabled = (evt.scale === MIN_SCALE);
|
||||||
document.getElementById('zoomIn').disabled = (evt.scale === MAX_SCALE);
|
document.getElementById('zoomIn').disabled = (evt.scale === MAX_SCALE);
|
||||||
|
|
||||||
var customScaleOption = document.getElementById('customScaleOption');
|
|
||||||
customScaleOption.selected = false;
|
|
||||||
|
|
||||||
if (!PDFViewerApplication.updateScaleControls &&
|
|
||||||
(document.getElementById('pageAutoOption').selected ||
|
|
||||||
document.getElementById('pageActualOption').selected ||
|
|
||||||
document.getElementById('pageFitOption').selected ||
|
|
||||||
document.getElementById('pageWidthOption').selected)) {
|
|
||||||
updateViewarea();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (evt.presetValue) {
|
if (evt.presetValue) {
|
||||||
selectScaleOption(evt.presetValue);
|
selectScaleOption(evt.presetValue);
|
||||||
updateViewarea();
|
updateViewarea();
|
||||||
@ -1772,6 +1757,7 @@ window.addEventListener('scalechange', function scalechange(evt) {
|
|||||||
|
|
||||||
var predefinedValueFound = selectScaleOption('' + evt.scale);
|
var predefinedValueFound = selectScaleOption('' + evt.scale);
|
||||||
if (!predefinedValueFound) {
|
if (!predefinedValueFound) {
|
||||||
|
var customScaleOption = document.getElementById('customScaleOption');
|
||||||
var customScale = Math.round(evt.scale * 10000) / 100;
|
var customScale = Math.round(evt.scale * 10000) / 100;
|
||||||
customScaleOption.textContent =
|
customScaleOption.textContent =
|
||||||
mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%');
|
mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user