1.3.0 final; added support for opening the new tab in foreground when holding ctrl key pressed
This commit is contained in:
parent
69e863e6ca
commit
583a1402ea
5 changed files with 118 additions and 71 deletions
|
|
@ -8,12 +8,121 @@ var leo_search = {
|
|||
if(query != null)
|
||||
{
|
||||
var myURL = "http://dict.leo.org/" + lang + "de?lang=" + sitelang + "&search=" + query;
|
||||
if(instanceOfMouseEvent.ctrlKey == true)
|
||||
openNewTabWith(myURL, null, null, true);
|
||||
if(e.ctrlKey == true)
|
||||
this.newTab(myURL, true);
|
||||
else
|
||||
openNewTabWith(myURL, null, null, true);
|
||||
this.newTab(myURL, false);
|
||||
}
|
||||
}
|
||||
},
|
||||
onFirefoxLoad: function(event) {
|
||||
document.getElementById("contentAreaContextMenu")
|
||||
.addEventListener("popupshowing",
|
||||
function (e){ leo_search.showFirefoxContextMenu(e); }, false);
|
||||
},
|
||||
showFirefoxContextMenu: function(event) {
|
||||
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
prefs = prefs.getBranch("extensions.leo_search.");
|
||||
|
||||
if(!prefs.getBoolPref("boolende") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-en-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-en-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolesde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-es-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-es-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolfrde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-fr-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-fr-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolchde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-ch-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-ch-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolitde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-it-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-it-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolrude") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-ru-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-ru-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolplde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-pl-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-pl-de").hidden = false;
|
||||
}
|
||||
if(!prefs.getBoolPref("boolptde") || !gContextMenu.isTextSelected) {
|
||||
document.getElementById("context-leo_search-pt-de").hidden = true;
|
||||
} else {
|
||||
document.getElementById("context-leo_search-pt-de").hidden = false;
|
||||
}
|
||||
},
|
||||
newTab: function(url, foregroundTab) {
|
||||
//var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||
|
||||
//if (prefManager.getIntPref("extensions.leo_search.reuse_tab") == 0) {
|
||||
var browser = top.document.getElementById("content");
|
||||
var newtab = browser.addTab(decodeURIComponent(url), {relatedToCurrent: true});
|
||||
if (foregroundTab) {
|
||||
browser.selectedTab = newtab;
|
||||
}
|
||||
//} else {
|
||||
// this.openOrReuseTab("extensions.leo_search.resultTab", url, foregroundTab);
|
||||
//}
|
||||
},
|
||||
// Taken from https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser
|
||||
openOrReuseTab: function(attrName, url, foregroundTab) {
|
||||
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator);
|
||||
for (var found = false, index = 0, tabbrowser = wm.getEnumerator('navigator:browser').getNext().gBrowser;
|
||||
index < tabbrowser.tabContainer.childNodes.length && !found;
|
||||
index++) {
|
||||
|
||||
// Get the next tab
|
||||
var currentTab = tabbrowser.tabContainer.childNodes[index];
|
||||
|
||||
// Does this tab contain our custom attribute?
|
||||
if (currentTab.hasAttribute(attrName)) {
|
||||
// Yes
|
||||
found = true;
|
||||
gBrowser.getBrowserAtIndex(index).loadURI(url);
|
||||
|
||||
if (foregroundTab) {
|
||||
// select and focus it.
|
||||
tabbrowser.selectedTab = currentTab;
|
||||
|
||||
// Focus *this* browser window in case another one is currently focused
|
||||
tabbrowser.ownerDocument.defaultView.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
// Our tab isn't open. Open it now.
|
||||
var browserEnumerator = wm.getEnumerator("navigator:browser");
|
||||
var tabbrowser = browserEnumerator.getNext().gBrowser;
|
||||
|
||||
// Create tab
|
||||
var newTab = tabbrowser.addTab(url);
|
||||
newTab.setAttribute(attrName, "leoOrg");
|
||||
|
||||
if (foregroundTab) {
|
||||
// Focus tab
|
||||
tabbrowser.selectedTab = newTab;
|
||||
|
||||
// Focus *this* browser window in case another one is currently focused
|
||||
tabbrowser.ownerDocument.defaultView.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener("load", leo_search.onFirefoxLoad, false);
|
||||
window.addEventListener("load", leo_search.onLoad, false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue