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)){
|
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();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user