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