Only update the max-height
of the SecondaryToolbar
when it's actually visible
There's really no good reason to attempt to adjust the `max-height` of the `SecondaryToolbar` when it's not visible, so let's not do that anymore. Also, we can listen for the `resize` event in `SecondaryToolbar`, to avoid having to manually call the `max-height` adjust function from various event handlers in `app.js`. Please note that by always adjusting the `max-height` when the toolbar is opened we no longer need the `localized` event, since it was mainly used to set a correct inital `max-height` value.
This commit is contained in:
parent
ca61ccc533
commit
6e126b31dc
10
web/app.js
10
web/app.js
@ -270,7 +270,7 @@ var PDFViewerApplication = {
|
|||||||
new PDFDocumentProperties(appConfig.documentProperties);
|
new PDFDocumentProperties(appConfig.documentProperties);
|
||||||
|
|
||||||
this.secondaryToolbar =
|
this.secondaryToolbar =
|
||||||
new SecondaryToolbar(appConfig.secondaryToolbar, eventBus);
|
new SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
|
||||||
|
|
||||||
if (this.supportsFullscreen) {
|
if (this.supportsFullscreen) {
|
||||||
this.pdfPresentationMode = new PDFPresentationMode({
|
this.pdfPresentationMode = new PDFPresentationMode({
|
||||||
@ -1807,10 +1807,6 @@ function webViewerResize() {
|
|||||||
}
|
}
|
||||||
PDFViewerApplication.pdfViewer.update();
|
PDFViewerApplication.pdfViewer.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the 'max-height' CSS property of the secondary toolbar.
|
|
||||||
var mainContainer = PDFViewerApplication.appConfig.mainContainer;
|
|
||||||
PDFViewerApplication.secondaryToolbar.setMaxHeight(mainContainer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('hashchange', function webViewerHashchange(evt) {
|
window.addEventListener('hashchange', function webViewerHashchange(evt) {
|
||||||
@ -1894,10 +1890,6 @@ function webViewerLocalized() {
|
|||||||
container.setAttribute('style', 'min-width: ' + width + 'px; ' +
|
container.setAttribute('style', 'min-width: ' + width + 'px; ' +
|
||||||
'max-width: ' + width + 'px;');
|
'max-width: ' + width + 'px;');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the 'max-height' CSS property of the secondary toolbar.
|
|
||||||
var mainContainer = PDFViewerApplication.appConfig.mainContainer;
|
|
||||||
PDFViewerApplication.secondaryToolbar.setMaxHeight(mainContainer);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,9 @@ var mozL10n = uiUtils.mozL10n;
|
|||||||
* @property {HTMLDivElement} toolbar - Container for the secondary toolbar.
|
* @property {HTMLDivElement} toolbar - Container for the secondary toolbar.
|
||||||
* @property {HTMLButtonElement} toggleButton - Button to toggle the visibility
|
* @property {HTMLButtonElement} toggleButton - Button to toggle the visibility
|
||||||
* of the secondary toolbar.
|
* of the secondary toolbar.
|
||||||
|
* @property {HTMLDivElement} toolbarButtonContainer - Container where all the
|
||||||
|
* toolbar buttons are placed. The maximum height of the toolbar is controlled
|
||||||
|
* dynamically by adjusting the 'max-height' CSS property of this DOM element.
|
||||||
* @property {HTMLButtonElement} presentationModeButton - Button for entering
|
* @property {HTMLButtonElement} presentationModeButton - Button for entering
|
||||||
* presentation mode.
|
* presentation mode.
|
||||||
* @property {HTMLButtonElement} openFileButton - Button to open a file.
|
* @property {HTMLButtonElement} openFileButton - Button to open a file.
|
||||||
@ -63,11 +66,13 @@ var SecondaryToolbar = (function SecondaryToolbarClosure() {
|
|||||||
/**
|
/**
|
||||||
* @constructs SecondaryToolbar
|
* @constructs SecondaryToolbar
|
||||||
* @param {SecondaryToolbarOptions} options
|
* @param {SecondaryToolbarOptions} options
|
||||||
|
* @param {HTMLDivElement} mainContainer
|
||||||
* @param {EventBus} eventBus
|
* @param {EventBus} eventBus
|
||||||
*/
|
*/
|
||||||
function SecondaryToolbar(options, eventBus) {
|
function SecondaryToolbar(options, mainContainer, eventBus) {
|
||||||
this.toolbar = options.toolbar;
|
this.toolbar = options.toolbar;
|
||||||
this.toggleButton = options.toggleButton;
|
this.toggleButton = options.toggleButton;
|
||||||
|
this.toolbarButtonContainer = options.toolbarButtonContainer;
|
||||||
this.buttons = [
|
this.buttons = [
|
||||||
{ element: options.presentationModeButton, eventName: 'presentationmode',
|
{ element: options.presentationModeButton, eventName: 'presentationmode',
|
||||||
close: true },
|
close: true },
|
||||||
@ -87,16 +92,19 @@ var SecondaryToolbar = (function SecondaryToolbarClosure() {
|
|||||||
eventName: 'documentproperties', close: true }
|
eventName: 'documentproperties', close: true }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
this.mainContainer = mainContainer;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
|
|
||||||
this.opened = false;
|
this.opened = false;
|
||||||
|
this.containerHeight = null;
|
||||||
this.previousContainerHeight = null;
|
this.previousContainerHeight = null;
|
||||||
this.newContainerHeight = null;
|
|
||||||
this.buttonContainer = this.toolbar.firstElementChild;
|
|
||||||
|
|
||||||
// Bind the event listeners for click and hand tool actions.
|
// Bind the event listeners for click and hand tool actions.
|
||||||
this._bindClickListeners();
|
this._bindClickListeners();
|
||||||
this._bindHandToolListener(options.toggleHandToolButton);
|
this._bindHandToolListener(options.toggleHandToolButton);
|
||||||
|
|
||||||
|
// Bind the event listener for adjusting the 'max-height' of the toolbar.
|
||||||
|
this.eventBus.on('resize', this._setMaxHeight.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
SecondaryToolbar.prototype = {
|
SecondaryToolbar.prototype = {
|
||||||
@ -155,6 +163,8 @@ var SecondaryToolbar = (function SecondaryToolbarClosure() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.opened = true;
|
this.opened = true;
|
||||||
|
this._setMaxHeight();
|
||||||
|
|
||||||
this.toggleButton.classList.add('toggled');
|
this.toggleButton.classList.add('toggled');
|
||||||
this.toolbar.classList.remove('hidden');
|
this.toolbar.classList.remove('hidden');
|
||||||
},
|
},
|
||||||
@ -176,18 +186,22 @@ var SecondaryToolbar = (function SecondaryToolbarClosure() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
setMaxHeight: function SecondaryToolbar_setMaxHeight(container) {
|
/**
|
||||||
if (!container || !this.buttonContainer) {
|
* @private
|
||||||
|
*/
|
||||||
|
_setMaxHeight: function SecondaryToolbar_setMaxHeight() {
|
||||||
|
if (!this.opened) {
|
||||||
|
return; // Only adjust the 'max-height' if the toolbar is visible.
|
||||||
|
}
|
||||||
|
this.containerHeight = this.mainContainer.clientHeight;
|
||||||
|
|
||||||
|
if (this.containerHeight === this.previousContainerHeight) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.newContainerHeight = container.clientHeight;
|
this.toolbarButtonContainer.setAttribute('style',
|
||||||
if (this.previousContainerHeight === this.newContainerHeight) {
|
'max-height: ' + (this.containerHeight - SCROLLBAR_PADDING) + 'px;');
|
||||||
return;
|
|
||||||
}
|
this.previousContainerHeight = this.containerHeight;
|
||||||
var maxHeight = this.newContainerHeight - SCROLLBAR_PADDING;
|
|
||||||
this.buttonContainer.setAttribute('style',
|
|
||||||
'max-height: ' + maxHeight + 'px;');
|
|
||||||
this.previousContainerHeight = this.newContainerHeight;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,6 +79,8 @@ function getViewerConfiguration() {
|
|||||||
secondaryToolbar: {
|
secondaryToolbar: {
|
||||||
toolbar: document.getElementById('secondaryToolbar'),
|
toolbar: document.getElementById('secondaryToolbar'),
|
||||||
toggleButton: document.getElementById('secondaryToolbarToggle'),
|
toggleButton: document.getElementById('secondaryToolbarToggle'),
|
||||||
|
toolbarButtonContainer:
|
||||||
|
document.getElementById('secondaryToolbarButtonContainer'),
|
||||||
presentationModeButton:
|
presentationModeButton:
|
||||||
document.getElementById('secondaryPresentationMode'),
|
document.getElementById('secondaryPresentationMode'),
|
||||||
openFileButton: document.getElementById('secondaryOpenFile'),
|
openFileButton: document.getElementById('secondaryOpenFile'),
|
||||||
|
Loading…
Reference in New Issue
Block a user