Fix dragging of files to the filesystem on macOS (and maybe Linux)
Calling getTransferData('zotero/item') when handling the application/x-moz-file-promise seems to have stopped working between Fx46 and Fx47, though I can't get older Nightly builds to run with mozregression (Sierra?) to find the specific change. Instead, work around this by passing an array of item ids to the file drag data provider.
This commit is contained in:
parent
e0b96a873b
commit
db8d3fd4b4
1 changed files with 5 additions and 9 deletions
|
@ -2612,7 +2612,7 @@ Zotero.ItemTreeView.prototype.onDragStart = function (event) {
|
||||||
Zotero.debug("Adding file via x-moz-file-promise");
|
Zotero.debug("Adding file via x-moz-file-promise");
|
||||||
event.dataTransfer.mozSetDataAt(
|
event.dataTransfer.mozSetDataAt(
|
||||||
"application/x-moz-file-promise",
|
"application/x-moz-file-promise",
|
||||||
new Zotero.ItemTreeView.fileDragDataProvider(),
|
new Zotero.ItemTreeView.fileDragDataProvider(itemIDs),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
@ -2688,7 +2688,9 @@ Zotero.ItemTreeView.prototype.onDragStart = function (event) {
|
||||||
// Implements nsIFlavorDataProvider for dragging attachment files to OS
|
// Implements nsIFlavorDataProvider for dragging attachment files to OS
|
||||||
//
|
//
|
||||||
// Not used on Windows in Firefox 3 or higher
|
// Not used on Windows in Firefox 3 or higher
|
||||||
Zotero.ItemTreeView.fileDragDataProvider = function() { };
|
Zotero.ItemTreeView.fileDragDataProvider = function (itemIDs) {
|
||||||
|
this._itemIDs = itemIDs;
|
||||||
|
};
|
||||||
|
|
||||||
Zotero.ItemTreeView.fileDragDataProvider.prototype = {
|
Zotero.ItemTreeView.fileDragDataProvider.prototype = {
|
||||||
QueryInterface : function(iid) {
|
QueryInterface : function(iid) {
|
||||||
|
@ -2712,13 +2714,7 @@ Zotero.ItemTreeView.fileDragDataProvider.prototype = {
|
||||||
transferable.getTransferData("application/x-moz-file-promise-dir", dirPrimitive, dataSize);
|
transferable.getTransferData("application/x-moz-file-promise-dir", dirPrimitive, dataSize);
|
||||||
var destDir = dirPrimitive.value.QueryInterface(Components.interfaces.nsILocalFile);
|
var destDir = dirPrimitive.value.QueryInterface(Components.interfaces.nsILocalFile);
|
||||||
|
|
||||||
// Get the items we're dragging
|
var draggedItems = Zotero.Items.get(this._itemIDs);
|
||||||
var items = {};
|
|
||||||
transferable.getTransferData("zotero/item", items, dataSize);
|
|
||||||
items.value.QueryInterface(Components.interfaces.nsISupportsString);
|
|
||||||
|
|
||||||
var draggedItems = Zotero.Items.get(items.value.data.split(','));
|
|
||||||
|
|
||||||
var items = [];
|
var items = [];
|
||||||
|
|
||||||
// Make sure files exist
|
// Make sure files exist
|
||||||
|
|
Loading…
Reference in a new issue