summaryrefslogtreecommitdiffstats
path: root/application/palemoon
diff options
context:
space:
mode:
authorjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-06-03 20:11:54 +0200
committerjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-06-03 20:11:54 +0200
commit8844b141bfbe9d1620d60b5fde4225124409585c (patch)
tree6c2edc7322b7479a660b2e6c11de56bff0dd0bfe /application/palemoon
parent13168ba15b63ccdd4b34e0a20bcb4deb37ab29f3 (diff)
downloadUXP-8844b141bfbe9d1620d60b5fde4225124409585c.tar
UXP-8844b141bfbe9d1620d60b5fde4225124409585c.tar.gz
UXP-8844b141bfbe9d1620d60b5fde4225124409585c.tar.lz
UXP-8844b141bfbe9d1620d60b5fde4225124409585c.tar.xz
UXP-8844b141bfbe9d1620d60b5fde4225124409585c.zip
[PALEMOON] Fix the Findbar - open when you press "/" or "'" keys
Issue #430
Diffstat (limited to 'application/palemoon')
-rw-r--r--application/palemoon/base/content/browser.js2
-rw-r--r--application/palemoon/base/content/tabbrowser.xml31
2 files changed, 27 insertions, 6 deletions
diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js
index 4bdac7850..a51b73fe8 100644
--- a/application/palemoon/base/content/browser.js
+++ b/application/palemoon/base/content/browser.js
@@ -64,7 +64,7 @@ XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
// Force a style flush to ensure that our binding is attached.
findbar.clientTop;
- findbar.browser = gBrowser;
+ findbar.browser = gBrowser.mCurrentBrowser;
window.gFindBarInitialized = true;
return findbar;
});
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();