mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-28 10:07:30 +09:00
[PALEMOON] Fix the Findbar - open when you press "/" or "'" keys
Issue #430
This commit is contained in:
parent
669f3729fd
commit
de5b649680
4 changed files with 60 additions and 9 deletions
|
|
@ -64,7 +64,7 @@ XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
|
||||||
|
|
||||||
// Force a style flush to ensure that our binding is attached.
|
// Force a style flush to ensure that our binding is attached.
|
||||||
findbar.clientTop;
|
findbar.clientTop;
|
||||||
findbar.browser = gBrowser;
|
findbar.browser = gBrowser.mCurrentBrowser;
|
||||||
window.gFindBarInitialized = true;
|
window.gFindBarInitialized = true;
|
||||||
return findbar;
|
return findbar;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -3093,13 +3093,25 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Findbar:Keypress":
|
case "Findbar:Keypress":
|
||||||
if (!gFindBarInitialized) {
|
// If the find bar for this tab is not yet alive, only initialize
|
||||||
// If the find bar for this tab is not yet alive, change that,
|
// it if there's a possibility FindAsYouType will be used.
|
||||||
// and make sure we return the result:
|
// There's no point in doing it for most random keypresses.
|
||||||
return gFindBar.receiveMessage(aMessage);
|
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;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
]]></body>
|
]]></body>
|
||||||
</method>
|
</method>
|
||||||
|
|
@ -3166,6 +3178,10 @@
|
||||||
this.mCurrentBrowser);
|
this.mCurrentBrowser);
|
||||||
}
|
}
|
||||||
messageManager.addMessageListener("DOMWebNotificationClicked", this);
|
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);
|
messageManager.addMessageListener("Findbar:Keypress", this);
|
||||||
]]>
|
]]>
|
||||||
</constructor>
|
</constructor>
|
||||||
|
|
@ -3421,6 +3437,7 @@
|
||||||
tab.setAttribute("onerror", "this.removeAttribute('image');");
|
tab.setAttribute("onerror", "this.removeAttribute('image');");
|
||||||
this.adjustTabstrip();
|
this.adjustTabstrip();
|
||||||
|
|
||||||
|
Services.prefs.addObserver("accessibility.typeaheadfind", this._prefObserver, false);
|
||||||
Services.prefs.addObserver("browser.tabs.", this._prefObserver, false);
|
Services.prefs.addObserver("browser.tabs.", this._prefObserver, false);
|
||||||
window.addEventListener("resize", this, false);
|
window.addEventListener("resize", this, false);
|
||||||
window.addEventListener("load", this, false);
|
window.addEventListener("load", this, false);
|
||||||
|
|
@ -3436,6 +3453,7 @@
|
||||||
|
|
||||||
<destructor>
|
<destructor>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver);
|
||||||
Services.prefs.removeObserver("browser.tabs.", this._prefObserver);
|
Services.prefs.removeObserver("browser.tabs.", this._prefObserver);
|
||||||
]]>
|
]]>
|
||||||
</destructor>
|
</destructor>
|
||||||
|
|
@ -3501,6 +3519,9 @@
|
||||||
|
|
||||||
observe: function (subject, topic, data) {
|
observe: function (subject, topic, data) {
|
||||||
switch (data) {
|
switch (data) {
|
||||||
|
case "accessibility.typeaheadfind":
|
||||||
|
this._findAsYouType = Services.prefs.getBoolPref(data);
|
||||||
|
break;
|
||||||
case "browser.tabs.closeButtons":
|
case "browser.tabs.closeButtons":
|
||||||
this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data);
|
this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data);
|
||||||
this.tabContainer.adjustTabstrip();
|
this.tabContainer.adjustTabstrip();
|
||||||
|
|
|
||||||
|
|
@ -841,6 +841,36 @@ var FindBar = {
|
||||||
fakeEvent[k] = event[k];
|
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
|
// sendSyncMessage returns an array of the responses from all listeners
|
||||||
let rv = sendSyncMessage("Findbar:Keypress", {
|
let rv = sendSyncMessage("Findbar:Keypress", {
|
||||||
fakeEvent: fakeEvent,
|
fakeEvent: fakeEvent,
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,8 @@ toolkit.jar:
|
||||||
content/global/plugins.html
|
content/global/plugins.html
|
||||||
content/global/plugins.css
|
content/global/plugins.css
|
||||||
content/global/browser-child.js
|
content/global/browser-child.js
|
||||||
content/global/browser-content.js
|
* content/global/browser-content.js
|
||||||
* content/global/buildconfig.html
|
* content/global/buildconfig.html
|
||||||
content/global/contentAreaUtils.js
|
content/global/contentAreaUtils.js
|
||||||
#ifndef MOZ_FENNEC
|
#ifndef MOZ_FENNEC
|
||||||
content/global/customizeToolbar.css
|
content/global/customizeToolbar.css
|
||||||
|
|
@ -56,7 +56,7 @@ toolkit.jar:
|
||||||
content/global/filepicker.properties
|
content/global/filepicker.properties
|
||||||
content/global/globalOverlay.js
|
content/global/globalOverlay.js
|
||||||
content/global/memoriam.xhtml
|
content/global/memoriam.xhtml
|
||||||
* content/global/mozilla.css
|
* content/global/mozilla.css
|
||||||
content/global/mozilla.xhtml
|
content/global/mozilla.xhtml
|
||||||
#ifdef MOZ_PHOENIX
|
#ifdef MOZ_PHOENIX
|
||||||
content/global/logopage.xhtml
|
content/global/logopage.xhtml
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue