diff --git a/mozilla/toolkit/components/typeaheadfind/content/findBar.js b/mozilla/toolkit/components/typeaheadfind/content/findBar.js index 6af95052ae2..90340c60ad3 100755 --- a/mozilla/toolkit/components/typeaheadfind/content/findBar.js +++ b/mozilla/toolkit/components/typeaheadfind/content/findBar.js @@ -372,6 +372,20 @@ function setFoundLink(foundLink) gFoundLink = foundLink; } +function finishFAYT(aKeypressEvent) +{ + if (!gFoundLink) + return false; + + gFoundLink.focus(); // In this function, gFoundLink is set null. + + if (aKeypressEvent) + aKeypressEvent.preventDefault(); + + closeFindBar(); + return true; +} + function delayedCloseFindBar() { var findField = document.getElementById("find-field"); @@ -516,13 +530,21 @@ function onFindBarKeyPress(evt) else { if (gFoundLink) { var tmpLink = gFoundLink; - tmpLink.focus(); // In this function, gFoundLink is set null. - fireKeypressEvent(tmpLink, evt); - evt.preventDefault(); - closeFindBar(); + if (finishFAYT(evt)) + fireKeypressEvent(tmpLink, evt); } } } + else if (evt.keyCode == KeyEvent.DOM_VK_TAB) { + var shouldHandle = !evt.altKey && !evt.ctrlKey && !evt.metaKey; + if (shouldHandle && gFindMode != FIND_NORMAL && + gFoundLink && finishFAYT(evt)) { + if (evt.shiftKey) + document.commandDispatcher.rewindFocus(); + else + document.commandDispatcher.advanceFocus(); + } + } else if (evt.keyCode == KeyEvent.DOM_VK_ESCAPE) { closeFindBar(); evt.preventDefault();