[SSE] Move sheet: drag and drop (bugs in FF, fix double events)
This commit is contained in:
parent
92e153b54a
commit
ecdd310efd
|
@ -259,13 +259,15 @@ define([
|
||||||
dragenter: $.proxy(function (e) {
|
dragenter: $.proxy(function (e) {
|
||||||
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 event = e.originalEvent;
|
||||||
|
var data = event.dataTransfer.getData("onlyoffice");
|
||||||
|
event.dataTransfer.dropEffect = data ? 'move' : 'none';
|
||||||
}, this),
|
}, this),
|
||||||
dragover: $.proxy(function (e) {
|
dragover: $.proxy(function (e) {
|
||||||
var event = e.originalEvent;
|
var event = e.originalEvent;
|
||||||
if (event.preventDefault) {
|
if (event.preventDefault) {
|
||||||
event.preventDefault(); // Necessary. Allows us to drop.
|
event.preventDefault(); // Necessary. Allows us to drop.
|
||||||
}
|
}
|
||||||
event.dataTransfer.dropEffect = 'move';
|
|
||||||
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');
|
||||||
return false;
|
return false;
|
||||||
|
@ -275,7 +277,6 @@ define([
|
||||||
}, this),
|
}, this),
|
||||||
dragend: $.proxy(function (e) {
|
dragend: $.proxy(function (e) {
|
||||||
var event = e.originalEvent;
|
var event = e.originalEvent;
|
||||||
var data = event.dataTransfer.getData('status');
|
|
||||||
if (event.dataTransfer.dropEffect === 'move') {
|
if (event.dataTransfer.dropEffect === 'move') {
|
||||||
this.bar.trigger('tab:dragend', true);
|
this.bar.trigger('tab:dragend', true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -288,7 +289,7 @@ define([
|
||||||
index = $(event.currentTarget).data('index');
|
index = $(event.currentTarget).data('index');
|
||||||
this.bar.$el.find('.mousemove').removeClass('mousemove right');
|
this.bar.$el.find('.mousemove').removeClass('mousemove right');
|
||||||
this.bar.trigger('tab:drop', event.dataTransfer, index);
|
this.bar.trigger('tab:drop', event.dataTransfer, index);
|
||||||
event.stopPropagation();
|
this.bar.isDrop = true;
|
||||||
}, this)
|
}, this)
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -328,6 +329,10 @@ define([
|
||||||
addEvent(this.$bar[0], 'dragstart', _.bind(function (event) {
|
addEvent(this.$bar[0], 'dragstart', _.bind(function (event) {
|
||||||
event.dataTransfer.effectAllowed = 'move';
|
event.dataTransfer.effectAllowed = 'move';
|
||||||
}, this));
|
}, this));
|
||||||
|
addEvent(this.$bar[0], 'dragenter', _.bind(function (event) {
|
||||||
|
var data = event.dataTransfer.getData("onlyoffice");
|
||||||
|
event.dataTransfer.dropEffect = data ? 'move' : 'none';
|
||||||
|
}, this));
|
||||||
addEvent(this.$bar[0], 'dragover', _.bind(function (event) {
|
addEvent(this.$bar[0], 'dragover', _.bind(function (event) {
|
||||||
if (event.preventDefault) {
|
if (event.preventDefault) {
|
||||||
event.preventDefault(); // Necessary. Allows us to drop.
|
event.preventDefault(); // Necessary. Allows us to drop.
|
||||||
|
@ -337,13 +342,17 @@ define([
|
||||||
return false;
|
return false;
|
||||||
}, this));
|
}, this));
|
||||||
addEvent(this.$bar[0], 'dragleave', _.bind(function (event) {
|
addEvent(this.$bar[0], 'dragleave', _.bind(function (event) {
|
||||||
|
event.dataTransfer.dropEffect = 'none';
|
||||||
this.tabs[this.tabs.length - 1].$el.removeClass('mousemove right');
|
this.tabs[this.tabs.length - 1].$el.removeClass('mousemove right');
|
||||||
}, this));
|
}, this));
|
||||||
addEvent(this.$bar[0], 'drop', _.bind(function (event) {
|
addEvent(this.$bar[0], 'drop', _.bind(function (event) {
|
||||||
var index = this.tabs.length;
|
var index = this.tabs.length;
|
||||||
this.$el.find('.mousemove').removeClass('mousemove right');
|
this.$el.find('.mousemove').removeClass('mousemove right');
|
||||||
this.trigger('tab:drop', event.dataTransfer, index);
|
if (this.isDrop === undefined) {
|
||||||
event.stopPropagation();
|
this.trigger('tab:drop', event.dataTransfer, index);
|
||||||
|
} else {
|
||||||
|
this.isDrop = undefined;
|
||||||
|
}
|
||||||
}, this));
|
}, this));
|
||||||
|
|
||||||
this.manager = new StateManager({bar: this});
|
this.manager = new StateManager({bar: this});
|
||||||
|
|
|
@ -238,7 +238,7 @@ define([
|
||||||
}
|
}
|
||||||
}).on('dragover', function(e) {
|
}).on('dragover', function(e) {
|
||||||
var event = e.originalEvent;
|
var event = e.originalEvent;
|
||||||
if (event.target && $(event.target).closest('#editor_sdk').length<1 && $(event.target).closest('#statusbar_bottom').length<1) {
|
if (event.target && $(event.target).closest('#editor_sdk').length<1 && !($(event.target).is('#statusbar_bottom') || $.contains($('#statusbar_bottom'), $(event.target))) ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.dataTransfer.dropEffect ="none";
|
event.dataTransfer.dropEffect ="none";
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue