use getXULWindowEnumerator to work around a bug I encountered on Linux (even though this code was based on an example on MDC, apparently it doesn't work quite right)

This commit is contained in:
Simon Kornblith 2011-02-06 07:16:10 +00:00
parent 51b5c8322e
commit 8deb7043fc

View File

@ -32,12 +32,15 @@ var ZoteroTab = new function()
// find window this tab is loaded in
var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = windowMediator.getZOrderDOMWindowEnumerator("navigator:browser", true);
var enumerator = windowMediator.getXULWindowEnumerator("navigator:browser");
while(enumerator.hasMoreElements()) {
var window = enumerator.getNext();
var xulwin = enumerator.getNext().QueryInterface(Components.interfaces.nsIXULWindow);
var window = xulwin.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
var browserIndex = window.gBrowser.getBrowserIndexForDocument(document);
if(browserIndex !== -1) break;
}
if(browserIndex === -1) return;
this.containerWindow = window;
@ -108,4 +111,4 @@ var ZoteroTab = new function()
}
window.addEventListener("load", function(e) { ZoteroTab.onLoad(e); }, false);
window.addEventListener("unload", function(e) { ZoteroTab.onUnload(e); }, false);
window.addEventListener("unload", function(e) { ZoteroTab.onUnload(e); }, false);