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

Issue #430
This commit is contained in:
janekptacijarabaci 2018-06-03 20:11:54 +02:00 committed by Roy Tam
commit de5b649680
4 changed files with 60 additions and 9 deletions

View file

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

View file

@ -3093,13 +3093,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>
@ -3166,6 +3178,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>
@ -3421,6 +3437,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);
@ -3436,6 +3453,7 @@
<destructor>
<![CDATA[
Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver);
Services.prefs.removeObserver("browser.tabs.", this._prefObserver);
]]>
</destructor>
@ -3501,6 +3519,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();

View file

@ -841,6 +841,36 @@ var FindBar = {
fakeEvent[k] = event[k];
}
}
#ifdef MC_PALEMOON
let findBarId = "FindToolbar";
// The FindBar is in the chrome window's context, not in tabbrowser
// - see also bug 537013
let chromeWin = null;
try {
chromeWin = content
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindow)
.QueryInterface(Ci.nsIDOMChromeWindow);
} catch (e) {
Cu.reportError(
"The FindBar - the chrome window's context was not detected:\n" + e);
}
if (chromeWin && chromeWin.document.getElementById(findBarId)) {
try {
chromeWin.document.getElementById(findBarId)
.browser = Services.wm.getMostRecentWindow("navigator:browser")
.gBrowser.mCurrentBrowser;
} catch (e) {
Cu.reportError(
"The FindBar - cannot set the property 'browser':\n" + e);
}
}
#endif
// sendSyncMessage returns an array of the responses from all listeners
let rv = sendSyncMessage("Findbar:Keypress", {
fakeEvent: fakeEvent,

View file

@ -37,8 +37,8 @@ toolkit.jar:
content/global/plugins.html
content/global/plugins.css
content/global/browser-child.js
content/global/browser-content.js
* content/global/buildconfig.html
* content/global/browser-content.js
* content/global/buildconfig.html
content/global/contentAreaUtils.js
#ifndef MOZ_FENNEC
content/global/customizeToolbar.css
@ -56,7 +56,7 @@ toolkit.jar:
content/global/filepicker.properties
content/global/globalOverlay.js
content/global/memoriam.xhtml
* content/global/mozilla.css
* content/global/mozilla.css
content/global/mozilla.xhtml
#ifdef MOZ_PHOENIX
content/global/logopage.xhtml