Merge pull request #791 from ONLYOFFICE/fix/drag-and-drop-bug
Fix/drag and drop bug
This commit is contained in:
commit
92c2682419
|
@ -268,9 +268,15 @@ define([
|
|||
});
|
||||
tab.$el.children().on(
|
||||
{dragstart: $.proxy(function (e) {
|
||||
var event = e.originalEvent,
|
||||
img = document.createElement('div');
|
||||
var event = e.originalEvent;
|
||||
if (!Common.Utils.isIE) {
|
||||
var img = document.createElement('div');
|
||||
event.dataTransfer.setDragImage(img, 0, 0);
|
||||
} else {
|
||||
this.bar.selectTabs.forEach(function (tab) {
|
||||
tab.$el.find('span').prop('title', '');
|
||||
});
|
||||
}
|
||||
event.dataTransfer.effectAllowed = 'move';
|
||||
this.bar.trigger('tab:dragstart', event.dataTransfer, this.bar.selectTabs);
|
||||
}, this),
|
||||
|
@ -279,8 +285,14 @@ define([
|
|||
if (!this.bar.isEditFormula) {
|
||||
this.bar.$el.find('.mousemove').removeClass('mousemove right');
|
||||
$(e.currentTarget).parent().addClass('mousemove');
|
||||
var data = event.dataTransfer.getData("onlyoffice");
|
||||
var data;
|
||||
if (!Common.Utils.isIE) {
|
||||
data = event.dataTransfer.getData('onlyoffice');
|
||||
event.dataTransfer.dropEffect = data ? 'move' : 'none';
|
||||
} else {
|
||||
data = event.dataTransfer.getData('text');
|
||||
event.dataTransfer.dropEffect = data === 'sheet' ? 'move' : 'none';
|
||||
}
|
||||
} else {
|
||||
event.dataTransfer.dropEffect = 'none';
|
||||
}
|
||||
|
@ -356,8 +368,14 @@ define([
|
|||
event.dataTransfer.effectAllowed = 'move';
|
||||
}, this));
|
||||
addEvent(this.$bar[0], 'dragenter', _.bind(function (event) {
|
||||
var data = event.dataTransfer.getData("onlyoffice");
|
||||
var data;
|
||||
if (!Common.Utils.isIE) {
|
||||
data = event.dataTransfer.getData('onlyoffice');
|
||||
event.dataTransfer.dropEffect = (!this.isEditFormula && data) ? 'move' : 'none';
|
||||
} else {
|
||||
data = event.dataTransfer.getData('text');
|
||||
event.dataTransfer.dropEffect = (data === 'sheet' && !this.isEditFormula) ? 'move' : 'none';
|
||||
}
|
||||
}, this));
|
||||
addEvent(this.$bar[0], 'dragover', _.bind(function (event) {
|
||||
if (event.preventDefault) {
|
||||
|
|
|
@ -214,7 +214,7 @@ define([
|
|||
onFieldsDragStart: function (item, index, event) {
|
||||
this._state.field = {record: item.model};
|
||||
event.originalEvent.dataTransfer.effectAllowed = 'move';
|
||||
event.originalEvent.dataTransfer.setDragImage(this.getDragElement(item.model.get('value')), 14, 14);
|
||||
!Common.Utils.isIE && event.originalEvent.dataTransfer.setDragImage(this.getDragElement(item.model.get('value')), 14, 14);
|
||||
this.pivotIndex = index;
|
||||
this.fromListView = this.fieldsList.$el[0].id;
|
||||
},
|
||||
|
@ -222,7 +222,7 @@ define([
|
|||
onItemsDragStart: function (type, listview, item, index, event) {
|
||||
this._state.field = {record: item.model, type: type};
|
||||
event.originalEvent.dataTransfer.effectAllowed = 'move';
|
||||
event.originalEvent.dataTransfer.setDragImage(this.getDragElement(item.model.get('value')), 14, 14);
|
||||
!Common.Utils.isIE && event.originalEvent.dataTransfer.setDragImage(this.getDragElement(item.model.get('value')), 14, 14);
|
||||
this.itemIndex = index;
|
||||
this.pivotIndex = listview.store.at(index).attributes.pivotIndex;
|
||||
this.fromListView = listview.$el[0].id;
|
||||
|
|
|
@ -203,6 +203,7 @@ define([
|
|||
|
||||
}, this),
|
||||
'tab:dragstart': _.bind(function (dataTransfer, selectTabs) {
|
||||
Common.Utils.isIE && (this.isDrop = false);
|
||||
Common.UI.Menu.Manager.hideAll();
|
||||
this.api.asc_closeCellEditor();
|
||||
var arrTabs = [],
|
||||
|
@ -234,12 +235,18 @@ define([
|
|||
arr.push({type: 'names', value: arrName});
|
||||
arr.push({type: 'key', value: Common.Utils.InternalSettings.get("sse-doc-info-key")});
|
||||
var json = JSON.stringify(arr);
|
||||
dataTransfer.setData("onlyoffice", json);
|
||||
if (!Common.Utils.isIE) {
|
||||
dataTransfer.setData('onlyoffice', json);
|
||||
} else {
|
||||
dataTransfer.setData('text', 'sheet');
|
||||
this.dataTransfer = json;
|
||||
}
|
||||
this.dropTabs = selectTabs;
|
||||
}, this),
|
||||
'tab:drop': _.bind(function (dataTransfer, index) {
|
||||
if (this.isEditFormula) return;
|
||||
var data = dataTransfer.getData("onlyoffice");
|
||||
if (this.isEditFormula || (Common.Utils.isIE && this.dataTransfer === undefined)) return;
|
||||
Common.Utils.isIE && (this.isDrop = true);
|
||||
var data = !Common.Utils.isIE ? dataTransfer.getData('onlyoffice') : this.dataTransfer;
|
||||
if (data) {
|
||||
var arrData = JSON.parse(data);
|
||||
if (arrData) {
|
||||
|
@ -277,7 +284,7 @@ define([
|
|||
}
|
||||
}, this),
|
||||
'tab:dragend': _.bind(function (cut) {
|
||||
if (cut) {
|
||||
if (cut && !(Common.Utils.isIE && this.isDrop === false)) {
|
||||
if (this.dropTabs.length > 0) {
|
||||
var arr = [];
|
||||
this.dropTabs.forEach(function (tab) {
|
||||
|
@ -287,6 +294,10 @@ define([
|
|||
}
|
||||
}
|
||||
this.dropTabs = undefined;
|
||||
if (Common.Utils.isIE) {
|
||||
this.isDrop = undefined;
|
||||
this.dataTransfer = undefined;
|
||||
}
|
||||
Common.NotificationCenter.trigger('tabs:dragend', this);
|
||||
}, this)
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue