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:
parent
7fef8f9a3c
commit
6afa7fdbff
|
@ -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();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user