Fixes #768, createHiddenBrowser() doesn't work on Windows using hiddenDOMWindow

Addresses #750, Creating a hidden browser causes a persistent wait cursor

Revert use of hidden window -- found another way to get rid of the wait cursor (by deleting the browser on a timer after importFromDocument())
This commit is contained in:
Dan Stillman 2007-09-19 07:02:07 +00:00
parent 7fef8f9a3c
commit 6afa7fdbff
2 changed files with 13 additions and 31 deletions

View File

@ -196,27 +196,15 @@ Zotero.Attachments = new function(){
if (Zotero.MIME.hasNativeHandler(mimeType, ext)){ if (Zotero.MIME.hasNativeHandler(mimeType, ext)){
var browser = Zotero.Browser.createHiddenBrowser(); var browser = Zotero.Browser.createHiddenBrowser();
var onpageshow = function() { var onpageshow = function() {
try {
Zotero.Attachments.importFromDocument(browser.contentDocument,
sourceItemID, forceTitle, parentCollectionIDs);
}
finally {
browser.removeEventListener("pageshow", onpageshow, true);
Zotero.Browser.deleteHiddenBrowser(browser);
}
/* Built-in method -- disabled in favor of WebPageDump
var callback = function () { var callback = function () {
browser.removeEventListener("pageshow", arguments.callee, true); browser.removeEventListener("pageshow", onpageshow, false);
Zotero.Browser.deleteHiddenBrowser(browser); Zotero.Browser.deleteHiddenBrowser(browser);
}; };
Zotero.Attachments.importFromDocument(browser.contentDocument, Zotero.Attachments.importFromDocument(browser.contentDocument,
sourceItemID, forceTitle, parentCollectionIDs, callback); sourceItemID, forceTitle, parentCollectionIDs, callback);
*/
}; };
browser.addEventListener("pageshow", onpageshow, true); browser.addEventListener("pageshow", onpageshow, false);
browser.loadURI(url); browser.loadURI(url);
} }
@ -417,7 +405,7 @@ Zotero.Attachments = new function(){
/* /*
* Save a snapshot -- uses synchronous WebPageDump or asynchronous saveURI() * Save a snapshot -- uses synchronous WebPageDump or asynchronous saveURI()
*/ */
function importFromDocument(document, sourceItemID, forceTitle, parentCollectionIDs) { function importFromDocument(document, sourceItemID, forceTitle, parentCollectionIDs, callback) {
Zotero.debug('Importing attachment from document'); Zotero.debug('Importing attachment from document');
var url = document.location.href; var url = document.location.href;
@ -467,6 +455,7 @@ Zotero.Attachments = new function(){
var f = function() { var f = function() {
Zotero.Fulltext.indexDocument(document, itemID); Zotero.Fulltext.indexDocument(document, itemID);
Zotero.Notifier.trigger('refresh', 'item', itemID); Zotero.Notifier.trigger('refresh', 'item', itemID);
callback();
}; };
} }

View File

@ -1580,26 +1580,19 @@ Zotero.Browser = new function() {
this.createHiddenBrowser = createHiddenBrowser; this.createHiddenBrowser = createHiddenBrowser;
this.deleteHiddenBrowser = deleteHiddenBrowser; this.deleteHiddenBrowser = deleteHiddenBrowser;
function createHiddenBrowser(myWindow) { function createHiddenBrowser(win) {
if(!myWindow) { if (!win) {
// Use the hidden window, since using the main window causes var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
// a persistent wait cursor
var myWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
.getService(Components.interfaces.nsIAppShellService)
.hiddenDOMWindow;
/*
var myWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator) .getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow("navigator:browser"); .getMostRecentWindow("navigator:browser");
*/
} }
// Create a hidden browser // Create a hidden browser
var newHiddenBrowser = myWindow.document.createElement("browser"); var hiddenBrowser = win.document.createElement("browser");
myWindow.document.documentElement.appendChild(newHiddenBrowser); win.document.documentElement.appendChild(hiddenBrowser);
Zotero.debug("created hidden browser (" Zotero.debug("created hidden browser ("
+ myWindow.document.getElementsByTagName('browser').length + ")"); + win.document.getElementsByTagName('browser').length + ")");
return newHiddenBrowser; return hiddenBrowser;
} }
function deleteHiddenBrowser(myBrowser) { function deleteHiddenBrowser(myBrowser) {