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:
Jonas Jenwald 2015-07-10 13:34:14 +02:00
parent 6c1906fd53
commit 5cb15874fa

View File

@ -109,7 +109,6 @@ var PDFViewerApplication = {
/** @type {PDFHistory} */
pdfHistory: null,
pageRotation: 0,
updateScaleControls: true,
isInitialViewSet: false,
animationStartedPromise: null,
preferenceSidebarViewOnLoad: SidebarView.NONE,
@ -1175,9 +1174,7 @@ var PDFViewerApplication = {
},
setScale: function (value, resetAutoSettings) {
this.updateScaleControls = !!resetAutoSettings;
this.pdfViewer.currentScaleValue = value;
this.updateScaleControls = true;
},
rotatePages: function pdfViewRotatePages(delta) {
@ -1752,18 +1749,6 @@ window.addEventListener('scalechange', function scalechange(evt) {
document.getElementById('zoomOut').disabled = (evt.scale === MIN_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) {
selectScaleOption(evt.presetValue);
updateViewarea();
@ -1772,6 +1757,7 @@ window.addEventListener('scalechange', function scalechange(evt) {
var predefinedValueFound = selectScaleOption('' + evt.scale);
if (!predefinedValueFound) {
var customScaleOption = document.getElementById('customScaleOption');
var customScale = Math.round(evt.scale * 10000) / 100;
customScaleOption.textContent =
mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%');