Merge pull request #5586 from fkaelberer/updateThumbnailClassesOnlyWhenVisible

Update thumbnails only when they are visible (to improve scrolling through large documents)
This commit is contained in:
Yury Delendik 2015-02-27 06:56:32 -06:00
commit ce122591b9
2 changed files with 32 additions and 5 deletions

View File

@ -76,7 +76,9 @@ var PDFThumbnailViewer = (function PDFThumbnailViewerClosure() {
selected.classList.remove('selected'); selected.classList.remove('selected');
} }
var thumbnail = document.getElementById('thumbnailContainer' + page); var thumbnail = document.getElementById('thumbnailContainer' + page);
thumbnail.classList.add('selected'); if (thumbnail) {
thumbnail.classList.add('selected');
}
var visibleThumbs = this._getVisibleThumbs(); var visibleThumbs = this._getVisibleThumbs();
var numVisibleThumbs = visibleThumbs.views.length; var numVisibleThumbs = visibleThumbs.views.length;

View File

@ -1157,6 +1157,23 @@ var PDFViewerApplication = {
} }
}, },
refreshThumbnailViewer: function pdfViewRefreshThumbnailViewer() {
var pdfViewer = this.pdfViewer;
var thumbnailViewer = this.pdfThumbnailViewer;
// set thumbnail images of rendered pages
var pagesCount = pdfViewer.pagesCount;
for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
var pageView = pdfViewer.getPageView(pageIndex);
if (pageView && pageView.renderingState === RenderingStates.FINISHED) {
var thumbnailView = thumbnailViewer.getThumbnail(pageIndex);
thumbnailView.setImage(pageView);
}
}
thumbnailViewer.scrollThumbnailIntoView(this.page);
},
switchSidebarView: function pdfViewSwitchSidebarView(view, openSidebar) { switchSidebarView: function pdfViewSwitchSidebarView(view, openSidebar) {
if (openSidebar && !this.sidebarOpen) { if (openSidebar && !this.sidebarOpen) {
document.getElementById('sidebarToggle').click(); document.getElementById('sidebarToggle').click();
@ -1551,6 +1568,9 @@ function webViewerInitialized() {
outerContainer.classList.toggle('sidebarOpen'); outerContainer.classList.toggle('sidebarOpen');
PDFViewerApplication.sidebarOpen = PDFViewerApplication.sidebarOpen =
outerContainer.classList.contains('sidebarOpen'); outerContainer.classList.contains('sidebarOpen');
if (PDFViewerApplication.sidebarOpen) {
PDFViewerApplication.refreshThumbnailViewer();
}
PDFViewerApplication.forceRendering(); PDFViewerApplication.forceRendering();
}); });
@ -1665,9 +1685,12 @@ document.addEventListener('pagerendered', function (e) {
var pageNumber = e.detail.pageNumber; var pageNumber = e.detail.pageNumber;
var pageIndex = pageNumber - 1; var pageIndex = pageNumber - 1;
var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.
getThumbnail(pageIndex); if (PDFViewerApplication.sidebarOpen) {
thumbnailView.setImage(pageView); var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.
getThumbnail(pageIndex);
thumbnailView.setImage(pageView);
}
if (PDFJS.pdfBug && Stats.enabled && pageView.stats) { if (PDFJS.pdfBug && Stats.enabled && pageView.stats) {
Stats.add(pageNumber, pageView.stats); Stats.add(pageNumber, pageView.stats);
@ -1897,7 +1920,9 @@ window.addEventListener('pagechange', function pagechange(evt) {
var page = evt.pageNumber; var page = evt.pageNumber;
if (evt.previousPageNumber !== page) { if (evt.previousPageNumber !== page) {
document.getElementById('pageNumber').value = page; document.getElementById('pageNumber').value = page;
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); if (PDFViewerApplication.sidebarOpen) {
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
}
} }
var numPages = PDFViewerApplication.pagesCount; var numPages = PDFViewerApplication.pagesCount;