diff --git a/apps/common/main/lib/component/TabBar.js b/apps/common/main/lib/component/TabBar.js index 599ab11cf..bb087bdac 100644 --- a/apps/common/main/lib/component/TabBar.js +++ b/apps/common/main/lib/component/TabBar.js @@ -268,9 +268,11 @@ define([ }); tab.$el.children().on( {dragstart: $.proxy(function (e) { - var event = e.originalEvent, - img = document.createElement('div'); - event.dataTransfer.setDragImage(img, 0, 0); + var event = e.originalEvent; + if (!Common.Utils.isIE) { + var img = document.createElement('div'); + event.dataTransfer.setDragImage(img, 0, 0); + } event.dataTransfer.effectAllowed = 'move'; this.bar.trigger('tab:dragstart', event.dataTransfer, this.bar.selectTabs); }, this), @@ -279,8 +281,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"); - event.dataTransfer.dropEffect = data ? 'move' : 'none'; + 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 +364,14 @@ define([ event.dataTransfer.effectAllowed = 'move'; }, this)); addEvent(this.$bar[0], 'dragenter', _.bind(function (event) { - var data = event.dataTransfer.getData("onlyoffice"); - event.dataTransfer.dropEffect = (!this.isEditFormula && data) ? 'move' : 'none'; + 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) { diff --git a/apps/spreadsheeteditor/main/app/view/Statusbar.js b/apps/spreadsheeteditor/main/app/view/Statusbar.js index fa373495d..3ee9d402e 100644 --- a/apps/spreadsheeteditor/main/app/view/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/view/Statusbar.js @@ -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) });