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)){
var browser = Zotero.Browser.createHiddenBrowser();
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 () {
browser.removeEventListener("pageshow", arguments.callee, true);
browser.removeEventListener("pageshow", onpageshow, false);
Zotero.Browser.deleteHiddenBrowser(browser);
};
Zotero.Attachments.importFromDocument(browser.contentDocument,
sourceItemID, forceTitle, parentCollectionIDs, callback);
*/
};
browser.addEventListener("pageshow", onpageshow, true);
browser.addEventListener("pageshow", onpageshow, false);
browser.loadURI(url);
}
@ -417,7 +405,7 @@ Zotero.Attachments = new function(){
/*
* 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');
var url = document.location.href;
@ -467,6 +455,7 @@ Zotero.Attachments = new function(){
var f = function() {
Zotero.Fulltext.indexDocument(document, itemID);
Zotero.Notifier.trigger('refresh', 'item', itemID);
callback();
};
}

View File

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