From 051495712c6d1e7a1c7de3fc3866fa529e74af04 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Wed, 6 Jun 2018 18:46:50 +0200 Subject: [PALEMOON] Fix the Findbar - open when you press "/" or "'" keys after start of browser Issue #430 --- application/palemoon/base/content/browser.js | 62 ++++++++++++++++++++++++ application/palemoon/base/content/tabbrowser.xml | 30 ------------ 2 files changed, 62 insertions(+), 30 deletions(-) diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index a51b73fe8..af5d8b62a 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -328,6 +328,66 @@ const gSessionHistoryObserver = { } }; +var gFindBarSettings = { + messageName: "Findbar:Keypress", + prefName: "accessibility.typeaheadfind", + findAsYouType: null, + + init() { + window.messageManager.addMessageListener(this.messageName, this); + + gPrefService.addObserver(this.prefName, this, false); + this.writeFindAsYouType(); + }, + + uninit() { + window.messageManager.removeMessageListener(this.messageName, this); + + try { + gPrefService.removeObserver(this.prefName, this); + } catch (ex) { + Cu.reportError(ex); + } + }, + + observe: function(aSubject, aTopic, aData) { + if (aTopic != "nsPref:changed") { + return; + } + + this.writeFindAsYouType(); + }, + + writeFindAsYouType: function() { + this.findAsYouType = gPrefService.getBoolPref(this.prefName); + }, + + receiveMessage(aMessage) { + switch (aMessage.name) { + case this.messageName: + // 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; + } + } +}; + var gURLBarSettings = { prefSuggest: "browser.urlbar.suggest.", /* @@ -730,6 +790,7 @@ var gBrowserInit = { #ifdef MOZ_DEVTOOLS DevToolsTheme.init(); #endif + gFindBarSettings.init(); messageManager.loadFrameScript("chrome://browser/content/content.js", true); messageManager.loadFrameScript("chrome://browser/content/content-sessionStore.js", true); @@ -1305,6 +1366,7 @@ var gBrowserInit = { #ifdef MOZ_DEVTOOLS DevToolsTheme.uninit(); #endif + gFindBarSettings.uninit(); UserAgentCompatibility.uninit(); diff --git a/application/palemoon/base/content/tabbrowser.xml b/application/palemoon/base/content/tabbrowser.xml index 12319a62b..d402957eb 100644 --- a/application/palemoon/base/content/tabbrowser.xml +++ b/application/palemoon/base/content/tabbrowser.xml @@ -3092,26 +3092,6 @@ window.focus(); break; } - case "Findbar:Keypress": - // 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; } ]]> @@ -3178,11 +3158,6 @@ 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); ]]> @@ -3437,7 +3412,6 @@ 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); @@ -3453,7 +3427,6 @@ @@ -3519,9 +3492,6 @@ 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(); -- cgit v1.2.3 From d4e6ea04fd5e741662c6ff3e08b44481a40a651d Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Wed, 6 Jun 2018 18:58:12 +0200 Subject: Fix a comment in browser.js (the FindBar - a tab vs the chrome window's context) Issue #430 --- application/palemoon/base/content/browser.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index af5d8b62a..def8828ec 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -365,8 +365,9 @@ var gFindBarSettings = { receiveMessage(aMessage) { switch (aMessage.name) { case this.messageName: - // If the find bar for this tab is not yet alive, only initialize - // it if there's a possibility FindAsYouType will be used. + // If the find bar for chrome window's context 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; -- cgit v1.2.3 From d48914545ee1536ae39b02c7c885cfbdd3c8b804 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 7 Jun 2018 05:32:41 +0200 Subject: Using "function()" in browser.js - consistency with the surrounding code Issue #430 --- application/palemoon/base/content/browser.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index def8828ec..ba791f709 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -333,14 +333,14 @@ var gFindBarSettings = { prefName: "accessibility.typeaheadfind", findAsYouType: null, - init() { + init: function() { window.messageManager.addMessageListener(this.messageName, this); gPrefService.addObserver(this.prefName, this, false); this.writeFindAsYouType(); }, - uninit() { + uninit: function() { window.messageManager.removeMessageListener(this.messageName, this); try { @@ -362,7 +362,7 @@ var gFindBarSettings = { this.findAsYouType = gPrefService.getBoolPref(this.prefName); }, - receiveMessage(aMessage) { + receiveMessage: function(aMessage) { switch (aMessage.name) { case this.messageName: // If the find bar for chrome window's context is not yet alive, -- cgit v1.2.3