Refactors PDFFindBar and FirefoxCom find events.

This commit is contained in:
Yury Delendik 2016-04-28 07:11:40 -05:00
parent 7fd3db9977
commit 3e6e294fd4
4 changed files with 48 additions and 19 deletions

View File

@ -248,7 +248,6 @@ var PDFViewerApplication = {
this.findBar.updateUIState(state, previous, matchCount); this.findBar.updateUIState(state, previous, matchCount);
} }
}.bind(this); }.bind(this);
this.findController.listenWindowEvents();
this.pdfViewer.setFindController(this.findController); this.pdfViewer.setFindController(this.findController);
@ -1249,6 +1248,7 @@ var PDFViewerApplication = {
eventBus.on('pagemode', webViewerPageMode); eventBus.on('pagemode', webViewerPageMode);
eventBus.on('namedaction', webViewerNamedAction); eventBus.on('namedaction', webViewerNamedAction);
eventBus.on('presentationmodechanged', webViewerPresentationModeChanged); eventBus.on('presentationmodechanged', webViewerPresentationModeChanged);
eventBus.on('find', webViewerFind);
//#if GENERIC //#if GENERIC
eventBus.on('fileinputchange', webViewerFileInputChange); eventBus.on('fileinputchange', webViewerFileInputChange);
//#endif //#endif
@ -1827,6 +1827,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) { function webViewerScaleChange(e) {
var appConfig = PDFViewerApplication.appConfig; var appConfig = PDFViewerApplication.appConfig;
appConfig.toolbar.zoomOut.disabled = (e.scale === MIN_SCALE); appConfig.toolbar.zoomOut.disabled = (e.scale === MIN_SCALE);
@ -1961,8 +1970,15 @@ window.addEventListener('keydown', function keydown(evt) {
break; break;
case 71: // g case 71: // g
if (!PDFViewerApplication.supportsIntegratedFind) { if (!PDFViewerApplication.supportsIntegratedFind) {
PDFViewerApplication.eventBus.dispatch('findagain', var findState = PDFViewerApplication.findController.state;
cmd === 5 || cmd === 12); if (findState) {
PDFViewerApplication.findController.executeCommand('findagain', {
query: findState.query,
caseSensitive: findState.caseSensitive,
highlightAll: findState.highlightAll,
findPrevious: cmd === 5 || cmd === 12
});
}
handled = true; handled = true;
} }
break; break;

View File

@ -83,6 +83,9 @@
e.source.container.dispatchEvent(event); e.source.container.dispatchEvent(event);
}); });
eventBus.on('find', function (e) { eventBus.on('find', function (e) {
if (e.source === window) {
return; // event comes from FirefoxCom, no need to replicate
}
var event = document.createEvent('CustomEvent'); var event = document.createEvent('CustomEvent');
event.initCustomEvent('find' + e.type, true, true, { event.initCustomEvent('find' + e.type, true, true, {
query: e.query, query: e.query,

View File

@ -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) { function FirefoxComDataRangeTransport(length, initialData) {
pdfjsLib.PDFDataRangeTransport.call(this, length, initialData); pdfjsLib.PDFDataRangeTransport.call(this, length, initialData);
} }

View File

@ -71,22 +71,6 @@ var PDFFindController = (function PDFFindControllerClosure() {
} }
PDFFindController.prototype = { 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() { reset: function PDFFindController_reset() {
this.startedTextExtraction = false; this.startedTextExtraction = false;
this.extractTextPromises = []; this.extractTextPromises = [];