[PALEMOON] Fix the Findbar - open when you press "/" or "'" keys after start of browser

Issue #430
This commit is contained in:
janekptacijarabaci 2018-06-06 18:46:50 +02:00 • committed by Roy Tam
commit 426e543f27
2 changed files with 62 additions and 30 deletions

View file

@ -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();

View file

@ -3106,26 +3106,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;
}
]]></body>
</method>
@ -3192,11 +3172,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);
]]>
</constructor>
@ -3451,7 +3426,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);
@ -3467,7 +3441,6 @@
<destructor>
<![CDATA[
Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver);
Services.prefs.removeObserver("browser.tabs.", this._prefObserver);
]]>
</destructor>
@ -3533,9 +3506,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();