From b1b661a2742f1d81f3783365b6f100f0a93788b7 Mon Sep 17 00:00:00 2001 From: Tim van der Meij <timvandermeij@gmail.com> Date: Wed, 9 Oct 2013 20:40:21 +0200 Subject: [PATCH] Refactoring thumbnail scroll code to fix jumps --- web/viewer.css | 5 +++++ web/viewer.js | 16 +++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/web/viewer.css b/web/viewer.css index 1eba4115c..84fa2b7a7 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -1078,6 +1078,11 @@ html[dir='rtl'] .verticalToolbarSeparator { .thumbnail { float: left; + margin-bottom: 5px; +} + +#thumbnailView > a:last-of-type > .thumbnail { + margin-bottom: 10px; } .thumbnail:not([data-loaded]) { diff --git a/web/viewer.js b/web/viewer.js index 293e765f7..f20b124b1 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -35,6 +35,7 @@ var MAX_SCALE = 4.0; var SETTINGS_MEMORY = 20; var SCALE_SELECT_CONTAINER_PADDING = 8; var SCALE_SELECT_PADDING = 22; +var THUMBNAIL_SCROLL_MARGIN = -19; var USE_ONLY_CSS_ZOOM = false; //#if B2G //USE_ONLY_CSS_ZOOM = true; @@ -1854,22 +1855,23 @@ window.addEventListener('pagechange', function pagechange(evt) { if (PDFView.previousPageNumber !== page) { document.getElementById('pageNumber').value = page; var selected = document.querySelector('.thumbnail.selected'); - if (selected) + if (selected) { selected.classList.remove('selected'); + } var thumbnail = document.getElementById('thumbnailContainer' + page); thumbnail.classList.add('selected'); var visibleThumbs = PDFView.getVisibleThumbs(); var numVisibleThumbs = visibleThumbs.views.length; - // If the thumbnail isn't currently visible scroll it into view. + + // If the thumbnail isn't currently visible, scroll it into view. if (numVisibleThumbs > 0) { var first = visibleThumbs.first.id; // Account for only one thumbnail being visible. - var last = numVisibleThumbs > 1 ? - visibleThumbs.last.id : first; - if (page <= first || page >= last) - scrollIntoView(thumbnail); + var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first); + if (page <= first || page >= last) { + scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }); + } } - } document.getElementById('previous').disabled = (page <= 1); document.getElementById('next').disabled = (page >= PDFView.pages.length);