Skip to content

Commit 71b1022

Browse files
committed
Merge pull request mozilla#2509 from Snuffleupagus/tweak-thumbnail-scrolling
Add various improvements to scroll Thumbnails into view
2 parents aac622a + ae29adc commit 71b1022

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

web/viewer.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ var PDFView = {
694694
mouseScrollTimeStamp: 0,
695695
mouseScrollDelta: 0,
696696
lastScroll: 0,
697+
previousPageNumber: 1,
697698

698699
// called once when the document is loaded
699700
initialize: function pdfViewInitialize() {
@@ -816,12 +817,14 @@ var PDFView = {
816817
event.initUIEvent('pagechange', false, false, window, 0);
817818

818819
if (!(0 < val && val <= pages.length)) {
820+
this.previousPageNumber = val;
819821
event.pageNumber = this.page;
820822
window.dispatchEvent(event);
821823
return;
822824
}
823825

824826
pages[val - 1].updateStats();
827+
this.previousPageNumber = currentPageNumber;
825828
currentPageNumber = val;
826829
event.pageNumber = val;
827830
window.dispatchEvent(event);
@@ -1479,12 +1482,21 @@ var PDFView = {
14791482

14801483
switch (view) {
14811484
case 'thumbs':
1485+
var wasOutlineViewVisible = thumbsView.classList.contains('hidden');
1486+
14821487
thumbsButton.classList.add('toggled');
14831488
outlineButton.classList.remove('toggled');
14841489
thumbsView.classList.remove('hidden');
14851490
outlineView.classList.add('hidden');
14861491

14871492
PDFView.renderHighestPriority();
1493+
1494+
if (wasOutlineViewVisible) {
1495+
// Ensure that the thumbnail of the current page is visible
1496+
// when switching from the outline view.
1497+
scrollIntoView(document.getElementById('thumbnailContainer' +
1498+
this.page));
1499+
}
14881500
break;
14891501

14901502
case 'outline':
@@ -2215,6 +2227,12 @@ var ThumbnailView = function thumbnailView(container, pdfPage, id) {
22152227
div.id = 'thumbnailContainer' + id;
22162228
div.className = 'thumbnail';
22172229

2230+
if (id === 1) {
2231+
// Highlight the thumbnail of the first page when no page number is
2232+
// specified (or exists in cache) when the document is loaded.
2233+
div.classList.add('selected');
2234+
}
2235+
22182236
var ring = document.createElement('div');
22192237
ring.className = 'thumbnailSelectionRing';
22202238
ring.style.width = canvasWidth + 'px';
@@ -3077,7 +3095,7 @@ window.addEventListener('scalechange', function scalechange(evt) {
30773095

30783096
window.addEventListener('pagechange', function pagechange(evt) {
30793097
var page = evt.pageNumber;
3080-
if (document.getElementById('pageNumber').value != page) {
3098+
if (PDFView.previousPageNumber !== page) {
30813099
document.getElementById('pageNumber').value = page;
30823100
var selected = document.querySelector('.thumbnail.selected');
30833101
if (selected)

0 commit comments

Comments
 (0)