Ignore some *scripting* events which don't make sense in PresentationMode
A number of the currently supported *scripting* events only make sense in the "normal" viewer mode, and not when PresentationMode is active. For example: - Changing the zoom-level will outright break rendering in PresentationMode, since it relies on "page-fit" being used. - Focusing a particular (AcroForm) element won't work, and could break keyboard navigation, since forms should not be editable in PresentationMode (see issue 12232).
This commit is contained in:
		
							parent
							
								
									57e7557235
								
							
						
					
					
						commit
						1fa5ce7f48
					
				@ -261,6 +261,11 @@ class PDFScriptingManager {
 | 
			
		||||
   * @private
 | 
			
		||||
   */
 | 
			
		||||
  async _updateFromSandbox(detail) {
 | 
			
		||||
    // Ignore some events, see below, that don't make sense in PresentationMode.
 | 
			
		||||
    const isInPresentationMode =
 | 
			
		||||
      this._pdfViewer.isInPresentationMode ||
 | 
			
		||||
      this._pdfViewer.isChangingPresentationMode;
 | 
			
		||||
 | 
			
		||||
    const { id, command, value } = detail;
 | 
			
		||||
    if (!id) {
 | 
			
		||||
      switch (command) {
 | 
			
		||||
@ -284,12 +289,21 @@ class PDFScriptingManager {
 | 
			
		||||
          console.log(value);
 | 
			
		||||
          break;
 | 
			
		||||
        case "zoom":
 | 
			
		||||
          if (isInPresentationMode) {
 | 
			
		||||
            return;
 | 
			
		||||
          }
 | 
			
		||||
          this._pdfViewer.currentScaleValue = value;
 | 
			
		||||
          break;
 | 
			
		||||
      }
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isInPresentationMode) {
 | 
			
		||||
      if (detail.focus) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const element = document.getElementById(id);
 | 
			
		||||
    if (element) {
 | 
			
		||||
      element.dispatchEvent(new CustomEvent("updatefromsandbox", { detail }));
 | 
			
		||||
@ -382,11 +396,9 @@ class PDFScriptingManager {
 | 
			
		||||
   * @private
 | 
			
		||||
   */
 | 
			
		||||
  async _getDocProperties() {
 | 
			
		||||
    // The default viewer use-case.
 | 
			
		||||
    if (this._docPropertiesLookup) {
 | 
			
		||||
      return this._docPropertiesLookup(this._pdfDocument);
 | 
			
		||||
    }
 | 
			
		||||
    // Fallback, to support the viewer components use-case.
 | 
			
		||||
    if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("COMPONENTS")) {
 | 
			
		||||
      const { docPropertiesLookup } = require("./generic_scripting.js");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user