1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 07:08:08 +02:00
pdf.js/web
Jonas Jenwald fd87f13521 Only scroll search results into view as a result of an actual find operation, and not when the user scrolls/zooms/rotates the document (bug 1237076, issue 6746)
Currently searching, and particularily highlighting of search results, may interfere with subsequent user-interactions such as scrolling/zooming/rotating which can result in a somewhat jarring UX where the document suddenly "jumps" to a previous position.
This is especially annoying in cases where the highlighted search result isn't even visible when a user initiated scrolling/zooming/rotating happens, and there exists a couple of bugs/issues about this behaviour.

It seems reasonable, as far as I'm concerned, to treat searching as one operation and any subsequent non-search user interactions with the viewer as separate and thus not scroll the current search result into view *unless* the user is actually doing another search.
This also seems consistent with general searching in e.g. Firefox and Adobe Reader:
 - Compare with "regular" searching of e.g. HTML files in Firefox, where the user scrolling and/or zooming the document will not force a currently highlighted search result to become re-scrolled into view.
 - Compare also with Adobe Reader, where the user scrolling, zooming, and/or rotating the document will not force the currently highlighted search result to become re-scrolled into view.

The question is then why search highlighting was implemented this way in PDF.js to begin with. It might be that this wasn't really intended behaviour, but more a consequence of the asynchronous nature of the API. Considering that most operations, such as fetching the page, rendering it and extracting its text-content are all asynchronous; searching and highlighting of matches thus becomes asynchronous too.
However, it should be possible to track when search results have been scrolled into view and highlighted, and thus prevent these wierd "jumps" when the user interacts with the document.

*Please note:* Unfortunately this required moving the scrolling of matches back into `PDFFindController`, since I simply couldn't see any other (reasonable) way of implementing the functionality without tracking the `_shouldScroll` property in only *one* spot.
However, given that the new `PDFFindController.scrollMatchIntoView` method follows a similar pattern as `BaseViewer.scrollPageIntoView` and `PDFThumbnailViewer.scrollThumbnailIntoView`, this is hopefully deemed OK.
2018-11-09 11:30:45 +01:00
..
images Add spread modes to web viewer 2018-05-14 23:10:32 -04:00
.eslintrc Provide custom messages for the no-restricted-globals ESLint rule, and refactor the .eslintrc files (PR 9868 follow-up) 2018-07-23 14:10:13 +02:00
.gitignore Remove obselete file from .gitignore 2015-01-26 16:44:45 +01:00
annotation_layer_builder.css Add support of Ink annotation 2018-10-03 00:28:49 +02:00
annotation_layer_builder.js Move the imageResourcesPath option to a BaseViewer/PDFPageView/AnnotationLayerBuilder option 2018-02-13 14:28:38 +01:00
app.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
app_options.js Add general support for re-dispatching events, on EventBus instances, to the DOM 2018-08-30 17:28:12 +02:00
base_viewer.js For repeated 'findagain' operations, attempt to reset the search position if the user has e.g. scrolled in the document (issue 4141) 2018-11-03 12:03:11 +01:00
chrome-i18n-allow-access-to-file-urls.json Add translations of "Allow access to file URLs" 2015-08-14 18:59:55 +02:00
chromecom.js Refactor the Preferences classes to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
compressed.tracemonkey-pldi-09.pdf Add Makefile. Move some files around to make building the website easier. 2011-07-05 10:53:57 -07:00
debugger.js Replace String.prototype.substr() occurrences with String.prototype.substring() 2018-09-28 11:41:07 +02:00
default_preferences.json Add general support for re-dispatching events, on EventBus instances, to the DOM 2018-08-30 17:28:12 +02:00
download_manager.js Stop exposing the URL polyfill in the global scope 2018-07-04 09:16:28 +02:00
firefox_print_service.js Use let/const instead of var in the printing code 2017-10-22 16:13:14 +02:00
firefoxcom.js Convert PDFDataRangeTransport to an ES6 class 2018-10-20 17:15:27 +02:00
genericcom.js Refactor the Preferences classes to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
genericl10n.js Refactor the IL10n implementations to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
grab_to_pan.js Enable the no-var ESLint rule in the /web folder 2017-11-05 16:53:47 +01:00
interfaces.js Simply export the various interface definitions, rather than disabling ESLint, in web/interfaces.js 2018-11-08 13:21:46 +01:00
overlay_manager.js Refactor the OverlayManager to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
password_prompt.js Change var to let, and use object destructuring, in a couple of previously class converted web/*.js files 2017-07-03 11:22:49 +02:00
pdf_attachment_viewer.js Move the disableCreateObjectURL option from the global PDFJS object and into getDocument instead 2018-03-01 18:11:17 +01:00
pdf_cursor_tools.js Simplify resetting of the SecondaryToolbar Scroll/Spread mode buttons, and add a missing comment in PDFCursorTools 2018-07-08 10:55:56 +02:00
pdf_document_properties.js Implement the setDocument method for the find controller 2018-09-30 16:57:40 +02:00
pdf_find_bar.js Convert some occurrences, in the /web folder, of classList.{add, remove} to classList.toggle with the "force" parameter 2018-10-12 15:41:11 +02:00
pdf_find_controller.js Only scroll search results into view as a result of an actual find operation, and not when the user scrolls/zooms/rotates the document (bug 1237076, issue 6746) 2018-11-09 11:30:45 +01:00
pdf_find_utils.js Add initial support for "Whole words" searching in the viewer 2018-09-10 11:59:29 +02:00
pdf_history.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
pdf_link_service.js For repeated 'findagain' operations, attempt to reset the search position if the user has e.g. scrolled in the document (issue 4141) 2018-11-03 12:03:11 +01:00
pdf_outline_viewer.js Attempt to simplify the signature of the PDFSidebar constructor, by moving the eventBus parameter from the options object and removing the PDFOutlineViewer dependency 2018-10-02 13:14:11 +02:00
pdf_page_view.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
pdf_presentation_mode.js Add source parameters to all remaining EventBus.dispatch calls that are currently missing those 2018-08-30 10:39:32 +02:00
pdf_print_service.js Stop exposing the URL polyfill in the global scope 2018-07-04 09:16:28 +02:00
pdf_rendering_queue.js Replace a few occurences of var with let in already ES6 converted web/ files 2017-10-22 16:23:38 +02:00
pdf_sidebar.js Attempt to simplify the signature of the PDFSidebar constructor, by moving the eventBus parameter from the options object and removing the PDFOutlineViewer dependency 2018-10-02 13:14:11 +02:00
pdf_sidebar_resizer.js Only resize the sidebar with the left mouse button 2017-12-02 19:05:17 +01:00
pdf_single_page_viewer.js Add a helper method for _getVisiblePages, in BaseViewer, for the case where only a single page is displayed in the viewer 2018-10-28 14:59:31 +01:00
pdf_thumbnail_view.js Refactor PDFThumbnailViewer.scrollThumbnailIntoView to avoid unnecessary DOM look-ups 2018-02-09 14:43:11 +01:00
pdf_thumbnail_viewer.js Replace the remaining occurences of instanceof Array with Array.isArray() 2018-07-09 13:17:41 +02:00
pdf_viewer.component.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
pdf_viewer.css Add spread modes to web viewer 2018-05-14 23:10:32 -04:00
pdf_viewer.js Add a helper method for _getVisiblePages, in BaseViewer, for the case where only a single page is displayed in the viewer 2018-10-28 14:59:31 +01:00
pdfjs.js Use ES6 notation, and replace var with let, in web/pdf_viewer.component.js and web/pdfjs.js 2017-11-05 16:53:47 +01:00
preferences.js Refactor the Preferences classes to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
secondary_toolbar.js Convert some occurrences, in the /web folder, of classList.{add, remove} to classList.toggle with the "force" parameter 2018-10-12 15:41:11 +02:00
text_layer_builder.css Clean up browser-specific CSS 2018-04-04 00:25:12 +02:00
text_layer_builder.js Only scroll search results into view as a result of an actual find operation, and not when the user scrolls/zooms/rotates the document (bug 1237076, issue 6746) 2018-11-09 11:30:45 +01:00
toolbar.js Convert some occurrences, in the /web folder, of classList.{add, remove} to classList.toggle with the "force" parameter 2018-10-12 15:41:11 +02:00
ui_utils.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
view_history.js Refactor the ViewHistory to utilize async methods rather than manually returning Promises 2018-09-03 09:52:36 +02:00
viewer-snippet-chrome-extension.html Wraps mozL10n to async calls; splits firefox and generic l10n libs. 2017-05-31 09:22:25 -05:00
viewer-snippet-chrome-overlays.html [CRX] Add file chooser as fallback (fixes #9411) 2018-03-21 18:21:46 +01:00
viewer-snippet-firefox-extension.html Wraps mozL10n to async calls; splits firefox and generic l10n libs. 2017-05-31 09:22:25 -05:00
viewer-snippet-minified.html Remove XHTML leftovers from the viewer HTML files 2016-02-14 13:23:34 +01:00
viewer-snippet.html Wraps mozL10n to async calls; splits firefox and generic l10n libs. 2017-05-31 09:22:25 -05:00
viewer.css Hide the Scroll/Spread mode buttons when the viewer is a PDFSinglePageViewer instance 2018-07-08 12:08:48 +02:00
viewer.html Add initial support for "Whole words" searching in the viewer 2018-09-10 11:59:29 +02:00
viewer.js Remove the attachDOMEventsToEventBus functionality, since EventBus instances are able to re-dispatch events to the DOM (PR 10019, bug 1492849 follow-up) 2018-10-31 23:32:39 +01:00
viewer_compatibility.js Remove the disableFullscreen hack for embedded IE 11 (issue 9585) 2018-06-14 12:25:28 +02:00