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:
commit
ce122591b9
@ -76,7 +76,9 @@ var PDFThumbnailViewer = (function PDFThumbnailViewerClosure() {
|
||||
selected.classList.remove('selected');
|
||||
}
|
||||
var thumbnail = document.getElementById('thumbnailContainer' + page);
|
||||
if (thumbnail) {
|
||||
thumbnail.classList.add('selected');
|
||||
}
|
||||
var visibleThumbs = this._getVisibleThumbs();
|
||||
var numVisibleThumbs = visibleThumbs.views.length;
|
||||
|
||||
|
@ -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) {
|
||||
if (openSidebar && !this.sidebarOpen) {
|
||||
document.getElementById('sidebarToggle').click();
|
||||
@ -1551,6 +1568,9 @@ function webViewerInitialized() {
|
||||
outerContainer.classList.toggle('sidebarOpen');
|
||||
PDFViewerApplication.sidebarOpen =
|
||||
outerContainer.classList.contains('sidebarOpen');
|
||||
if (PDFViewerApplication.sidebarOpen) {
|
||||
PDFViewerApplication.refreshThumbnailViewer();
|
||||
}
|
||||
PDFViewerApplication.forceRendering();
|
||||
});
|
||||
|
||||
@ -1665,9 +1685,12 @@ document.addEventListener('pagerendered', function (e) {
|
||||
var pageNumber = e.detail.pageNumber;
|
||||
var pageIndex = pageNumber - 1;
|
||||
var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
|
||||
|
||||
if (PDFViewerApplication.sidebarOpen) {
|
||||
var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.
|
||||
getThumbnail(pageIndex);
|
||||
thumbnailView.setImage(pageView);
|
||||
}
|
||||
|
||||
if (PDFJS.pdfBug && Stats.enabled && pageView.stats) {
|
||||
Stats.add(pageNumber, pageView.stats);
|
||||
@ -1897,8 +1920,10 @@ window.addEventListener('pagechange', function pagechange(evt) {
|
||||
var page = evt.pageNumber;
|
||||
if (evt.previousPageNumber !== page) {
|
||||
document.getElementById('pageNumber').value = page;
|
||||
if (PDFViewerApplication.sidebarOpen) {
|
||||
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
|
||||
}
|
||||
}
|
||||
var numPages = PDFViewerApplication.pagesCount;
|
||||
|
||||
document.getElementById('previous').disabled = (page <= 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user