summaryrefslogtreecommitdiffstats
path: root/application/palemoon/base/content/tabbrowser.xml
diff options
context:
space:
mode:
Diffstat (limited to 'application/palemoon/base/content/tabbrowser.xml')
-rw-r--r--application/palemoon/base/content/tabbrowser.xml31
1 files changed, 26 insertions, 5 deletions
diff --git a/application/palemoon/base/content/tabbrowser.xml b/application/palemoon/base/content/tabbrowser.xml
index 10f109ce8..a0ee59350 100644
--- a/application/palemoon/base/content/tabbrowser.xml
+++ b/application/palemoon/base/content/tabbrowser.xml
@@ -3096,13 +3096,25 @@
break;
}
case "Findbar:Keypress":
- if (!gFindBarInitialized) {
- // If the find bar for this tab is not yet alive, change that,
- // and make sure we return the result:
- return gFindBar.receiveMessage(aMessage);
+ // If the find bar for this tab is not yet alive, only initialize
+ // it if there's a possibility FindAsYouType will be used.
+ // There's no point in doing it for most random keypresses.
+ if (!gFindBarInitialized && aMessage.data.shouldFastFind) {
+ let shouldFastFind = this._findAsYouType;
+ if (!shouldFastFind) {
+ // Please keep in sync with toolkit/content/widgets/findbar.xml
+ const FAYT_LINKS_KEY = "'";
+ const FAYT_TEXT_KEY = "/";
+ let charCode = aMessage.data.fakeEvent.charCode;
+ let key = charCode ? String.fromCharCode(charCode) : null;
+ shouldFastFind = key == FAYT_LINKS_KEY || key == FAYT_TEXT_KEY;
+ }
+ if (shouldFastFind) {
+ // Make sure we return the result.
+ return gFindBar.receiveMessage(aMessage);
+ }
}
break;
-
}
]]></body>
</method>
@@ -3169,6 +3181,10 @@
this.mCurrentBrowser);
}
messageManager.addMessageListener("DOMWebNotificationClicked", this);
+
+ // To correctly handle keypresses for potential FindAsYouType, while
+ // the tab's find bar is not yet initialized.
+ this._findAsYouType = Services.prefs.getBoolPref("accessibility.typeaheadfind");
messageManager.addMessageListener("Findbar:Keypress", this);
]]>
</constructor>
@@ -3429,6 +3445,7 @@
tab.setAttribute("onerror", "this.removeAttribute('image');");
this.adjustTabstrip();
+ Services.prefs.addObserver("accessibility.typeaheadfind", this._prefObserver, false);
Services.prefs.addObserver("browser.tabs.", this._prefObserver, false);
window.addEventListener("resize", this, false);
window.addEventListener("load", this, false);
@@ -3444,6 +3461,7 @@
<destructor>
<![CDATA[
+ Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver);
Services.prefs.removeObserver("browser.tabs.", this._prefObserver);
]]>
</destructor>
@@ -3509,6 +3527,9 @@
observe: function (subject, topic, data) {
switch (data) {
+ case "accessibility.typeaheadfind":
+ this._findAsYouType = Services.prefs.getBoolPref(data);
+ break;
case "browser.tabs.closeButtons":
this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data);
this.tabContainer.adjustTabstrip();