From 4cf8b012478cc76c9d1671cad82e451988a26b4b Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Tue, 26 Apr 2016 12:00:54 -0500 Subject: [PATCH] Refactors PDFFindBar and FirefoxCom find events. --- web/app.js | 11 ++++++++++- web/dom_events.js | 3 +++ web/firefoxcom.js | 26 ++++++++++++++++++++++++++ web/pdf_find_controller.js | 16 ---------------- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/web/app.js b/web/app.js index 00fa3fc87f1818..9f670747e63f77 100644 --- a/web/app.js +++ b/web/app.js @@ -248,7 +248,6 @@ var PDFViewerApplication = { this.findBar.updateUIState(state, previous, matchCount); } }.bind(this); - this.findController.listenWindowEvents(); this.pdfViewer.setFindController(this.findController); @@ -1250,6 +1249,7 @@ var PDFViewerApplication = { eventBus.on('pagemode', webViewerPageMode); eventBus.on('namedaction', webViewerNamedAction); eventBus.on('presentationmodechanged', webViewerPresentationModeChanged); + eventBus.on('find', webViewerFind); } }; @@ -1825,6 +1825,15 @@ function webViewerLocalized() { }); } +function webViewerFind(e) { + PDFViewerApplication.findController.executeCommand('find' + e.type, { + query: e.query, + caseSensitive: e.caseSensitive, + highlightAll: e.highlightAll, + findPrevious: e.findPrevious + }); +} + function webViewerScaleChange(e) { var appConfig = PDFViewerApplication.appConfig; appConfig.toolbar.zoomOut.disabled = (e.scale === MIN_SCALE); diff --git a/web/dom_events.js b/web/dom_events.js index 03d7e98740c87c..64c190005e9d50 100644 --- a/web/dom_events.js +++ b/web/dom_events.js @@ -83,6 +83,9 @@ e.source.container.dispatchEvent(event); }); eventBus.on('find', function (e) { + if (e.source === window) { + return; // event comes from FirefoxCom, no need to replicate + } var event = document.createEvent('CustomEvent'); event.initCustomEvent('find' + e.type, true, true, { query: e.query, diff --git a/web/firefoxcom.js b/web/firefoxcom.js index 8dc01f19227ab7..236a0b9efe0b19 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -148,6 +148,32 @@ Preferences._readFromStorage = function (prefObj) { }); }; +(function listenFindEvents() { + var events = [ + 'find', + 'findagain', + 'findhighlightallchange', + 'findcasesensitivitychange' + ]; + var handleEvent = function (evt) { + if (!PDFViewerApplication.initialized) { + return; + } + PDFViewerApplication.eventBus.dispatch('find', { + source: window, + type: evt.type.substring('find'.length), + query: evt.detail.query, + caseSensitive: !!evt.detail.caseSensitive, + highlightAll: !!evt.detail.highlightAll, + findPrevious: !!evt.detail.findPrevious + }); + }.bind(this); + + for (var i = 0, len = events.length; i < len; i++) { + window.addEventListener(events[i], handleEvent); + } +})(); + function FirefoxComDataRangeTransport(length, initialData) { pdfjsLib.PDFDataRangeTransport.call(this, length, initialData); } diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js index b61a3642b5aebd..b085a6bc5e4cb9 100644 --- a/web/pdf_find_controller.js +++ b/web/pdf_find_controller.js @@ -71,22 +71,6 @@ var PDFFindController = (function PDFFindControllerClosure() { } PDFFindController.prototype = { - listenWindowEvents: function PDFFindController_listenWindowEvents() { - var events = [ - 'find', - 'findagain', - 'findhighlightallchange', - 'findcasesensitivitychange' - ]; - var handleEvent = function (e) { - this.executeCommand(e.type, e.detail); - }.bind(this); - - for (var i = 0, len = events.length; i < len; i++) { - window.addEventListener(events[i], handleEvent); - } - }, - reset: function PDFFindController_reset() { this.startedTextExtraction = false; this.extractTextPromises = [];