Merge pull request #8788 from Snuffleupagus/pageMode-followup

Attempt to delay disabling of the attachment view until FileAttachment annotations of the *initial* page has been parsed
This commit is contained in:
Tim van der Meij 2017-08-18 00:04:37 +02:00 committed by GitHub
commit 8c8d8fa239
3 changed files with 28 additions and 16 deletions

View File

@ -35,13 +35,12 @@ class PDFAttachmentViewer {
* @param {PDFAttachmentViewerOptions} options
*/
constructor({ container, eventBus, downloadManager, }) {
this.attachments = null;
this.container = container;
this.eventBus = eventBus;
this.downloadManager = downloadManager;
this._renderedCapability = createPromiseCapability();
this.reset();
this.eventBus.on('fileattachmentannotation',
this._appendAttachment.bind(this));
}
@ -63,12 +62,12 @@ class PDFAttachmentViewer {
* @private
*/
_dispatchEvent(attachmentsCount) {
this._renderedCapability.resolve();
this.eventBus.dispatch('attachmentsloaded', {
source: this,
attachmentsCount,
});
this._renderedCapability.resolve();
}
/**

View File

@ -36,12 +36,11 @@ class PDFOutlineViewer {
* @param {PDFOutlineViewerOptions} options
*/
constructor({ container, linkService, eventBus, }) {
this.outline = null;
this.lastToggleIsShow = true;
this.container = container;
this.linkService = linkService;
this.eventBus = eventBus;
this.reset();
}
reset() {

View File

@ -420,17 +420,31 @@ class PDFSidebar {
});
this.eventBus.on('attachmentsloaded', (evt) => {
let attachmentsCount = evt.attachmentsCount;
if (evt.attachmentsCount) {
this.attachmentsButton.disabled = false;
this.attachmentsButton.disabled = !attachmentsCount;
if (attachmentsCount) {
this._showUINotification(SidebarView.ATTACHMENTS);
} else if (this.active === SidebarView.ATTACHMENTS) {
// If the attachment view was opened during document load, switch away
// from it if it turns out that the document has no attachments.
this.switchView(SidebarView.THUMBS);
return;
}
// Attempt to avoid temporarily disabling, and switching away from, the
// attachment view for documents that do not contain proper attachments
// but *only* FileAttachment annotations. Hence we defer those operations
// slightly to allow time for parsing any FileAttachment annotations that
// may be present on the *initially* rendered page of the document.
Promise.resolve().then(() => {
if (this.attachmentsView.hasChildNodes()) {
// FileAttachment annotations were appended to the attachment view.
return;
}
this.attachmentsButton.disabled = true;
if (this.active === SidebarView.ATTACHMENTS) {
// If the attachment view was opened during document load, switch away
// from it if it turns out that the document has no attachments.
this.switchView(SidebarView.THUMBS);
}
});
});
// Update the thumbnailViewer, if visible, when exiting presentation mode.