diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-06-03 20:11:54 +0200 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-06-03 20:11:54 +0200 |
commit | 8844b141bfbe9d1620d60b5fde4225124409585c (patch) | |
tree | 6c2edc7322b7479a660b2e6c11de56bff0dd0bfe /application/palemoon/base/content | |
parent | 13168ba15b63ccdd4b34e0a20bcb4deb37ab29f3 (diff) | |
download | UXP-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/base/content')
-rw-r--r-- | application/palemoon/base/content/browser.js | 2 | ||||
-rw-r--r-- | application/palemoon/base/content/tabbrowser.xml | 31 |
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(); |