Merge pull request #3607 from Snuffleupagus/issue-3604

Prevent searching during load from breaking the find functionality
This commit is contained in:
Brendan Dahl 2013-09-05 08:13:45 -07:00
commit 7cf8b8d70c
2 changed files with 14 additions and 10 deletions

View File

@ -64,6 +64,8 @@ var PDFFindController = {
integratedFind: false, integratedFind: false,
firstPagePromise: new PDFJS.Promise(),
initialize: function(options) { initialize: function(options) {
if(typeof PDFFindBar === 'undefined' || PDFFindBar === null) { if(typeof PDFFindBar === 'undefined' || PDFFindBar === null) {
throw 'PDFFindController cannot be initialized ' + throw 'PDFFindController cannot be initialized ' +
@ -172,15 +174,17 @@ var PDFFindController = {
this.state = e.detail; this.state = e.detail;
this.updateUIState(FindStates.FIND_PENDING); this.updateUIState(FindStates.FIND_PENDING);
this.extractText(); this.firstPagePromise.then(function() {
this.extractText();
clearTimeout(this.findTimeout); clearTimeout(this.findTimeout);
if (e.type === 'find') { if (e.type === 'find') {
// Only trigger the find action after 250ms of silence. // Only trigger the find action after 250ms of silence.
this.findTimeout = setTimeout(this.nextMatch.bind(this), 250); this.findTimeout = setTimeout(this.nextMatch.bind(this), 250);
} else { } else {
this.nextMatch(); this.nextMatch();
} }
}.bind(this));
}, },
updatePage: function(idx) { updatePage: function(idx) {

View File

@ -162,8 +162,6 @@ var Settings = (function SettingsClosure() {
var cache = new Cache(CACHE_SIZE); var cache = new Cache(CACHE_SIZE);
var currentPageNumber = 1; var currentPageNumber = 1;
// TODO: Enable the FindBar *AFTER* the pagesPromise in the load function
// got resolved
//#include pdf_find_bar.js //#include pdf_find_bar.js
//#include pdf_find_controller.js //#include pdf_find_controller.js
//#include pdf_history.js //#include pdf_history.js
@ -941,6 +939,8 @@ var PDFView = {
pagePromises.push(pagePromise); pagePromises.push(pagePromise);
} }
PDFFindController.firstPagePromise.resolve();
PDFJS.Promise.all(pagePromises).then(function(pages) { PDFJS.Promise.all(pagePromises).then(function(pages) {
pagesPromise.resolve(pages); pagesPromise.resolve(pages);
}); });