Merge pull request #6256 from Snuffleupagus/bug-1186842
Ensure that the viewer always receives focus when the HOME/END keys are pressed (bug 1186842)
This commit is contained in:
commit
d162dba85e
@ -1938,6 +1938,7 @@ window.addEventListener('keydown', function keydown(evt) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var ensureViewerFocused = false;
|
||||||
|
|
||||||
if (cmd === 0) { // no control key pressed at all.
|
if (cmd === 0) { // no control key pressed at all.
|
||||||
switch (evt.keyCode) {
|
switch (evt.keyCode) {
|
||||||
@ -1996,6 +1997,7 @@ window.addEventListener('keydown', function keydown(evt) {
|
|||||||
if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
|
if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
|
||||||
PDFViewerApplication.page = 1;
|
PDFViewerApplication.page = 1;
|
||||||
handled = true;
|
handled = true;
|
||||||
|
ensureViewerFocused = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 35: // end
|
case 35: // end
|
||||||
@ -2003,6 +2005,7 @@ window.addEventListener('keydown', function keydown(evt) {
|
|||||||
PDFViewerApplication.page < PDFViewerApplication.pagesCount)) {
|
PDFViewerApplication.page < PDFViewerApplication.pagesCount)) {
|
||||||
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
|
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
|
||||||
handled = true;
|
handled = true;
|
||||||
|
ensureViewerFocused = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2037,17 +2040,10 @@ window.addEventListener('keydown', function keydown(evt) {
|
|||||||
if (!handled && !isViewerInPresentationMode) {
|
if (!handled && !isViewerInPresentationMode) {
|
||||||
// 33=Page Up 34=Page Down 35=End 36=Home
|
// 33=Page Up 34=Page Down 35=End 36=Home
|
||||||
// 37=Left 38=Up 39=Right 40=Down
|
// 37=Left 38=Up 39=Right 40=Down
|
||||||
if (evt.keyCode >= 33 && evt.keyCode <= 40 &&
|
|
||||||
!pdfViewer.containsElement(curElement)) {
|
|
||||||
// The page container is not focused, but a page navigation key has been
|
|
||||||
// pressed. Change the focus to the viewer container to make sure that
|
|
||||||
// navigation by keyboard works as expected.
|
|
||||||
pdfViewer.focus();
|
|
||||||
}
|
|
||||||
// 32=Spacebar
|
// 32=Spacebar
|
||||||
if (evt.keyCode === 32 && curElementTagName !== 'BUTTON' &&
|
if ((evt.keyCode >= 33 && evt.keyCode <= 40) ||
|
||||||
!pdfViewer.containsElement(curElement)) {
|
(evt.keyCode === 32 && curElementTagName !== 'BUTTON')) {
|
||||||
pdfViewer.focus();
|
ensureViewerFocused = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2068,6 +2064,13 @@ window.addEventListener('keydown', function keydown(evt) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {
|
||||||
|
// The page container is not focused, but a page navigation key has been
|
||||||
|
// pressed. Change the focus to the viewer container to make sure that
|
||||||
|
// navigation by keyboard works as expected.
|
||||||
|
pdfViewer.focus();
|
||||||
|
}
|
||||||
|
|
||||||
if (handled) {
|
if (handled) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user