[SSE] Move sheet: drag and drop

This commit is contained in:
Julia Svinareva 2019-12-24 10:52:37 +03:00
parent 5e47e79659
commit 45b7b71a0a
2 changed files with 30 additions and 3 deletions

View file

@ -52,7 +52,7 @@ define([
this.label = 'Tab';
this.cls = '';
this.template = _.template(['<li class="<% if(active){ %>active selected<% } %> <% if(cls.length){%><%= cls %><%}%>" data-label="<%= label %>">',
'<a title="<%= label %>"><%- label %></a>',
'<a title="<%= label %>" draggable="true" oo_editor_input="true" tabindex="-1"><%- label %></a>',
'</li>'].join(''));
this.initialize.call(this, opts);

View file

@ -233,15 +233,32 @@ define([
this.trigger('tab:contextmenu', this, this.tabs.indexOf(tab), tab, this.selectTabs);
}, this.bar),
mousedown: $.proxy(function (e) {
if (this.bar.options.draggable && !_.isUndefined(dragHelper) && (3 !== e.which)) {
/*if (this.bar.options.draggable && !_.isUndefined(dragHelper) && (3 !== e.which)) {
if (!tab.isLockTheDrag) {
if (!e.ctrlKey && !e.metaKey && !e.shiftKey)
tab.changeState();
dragHelper.setHookTabs(e, this.bar, this.bar.selectTabs);
}
}
}*/
this.bar.trigger('tab:drag', this.bar.selectTabs);
}, this)
});
tab.$el.children().on(
{dragstart: $.proxy(function (e) {
var event = e.originalEvent,
img = document.createElement('div');
event.dataTransfer.setDragImage(img, 0, 0);
event.dataTransfer.effectAllowed = 'move';
}, this),
dragover: $.proxy(function (e) {
var event = e.originalEvent;
if (event.preventDefault) {
event.preventDefault(); // Necessary. Allows us to drop.
}
event.dataTransfer.dropEffect = 'move';
return false;
}, this),
});
};
StateManager.prototype.detach = function (tab) {
@ -276,6 +293,16 @@ define([
var eventname=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';
addEvent(this.$bar[0], eventname, _.bind(this._onMouseWheel,this));
addEvent(this.$bar[0], 'dragstart', _.bind(function (event) {
event.dataTransfer.effectAllowed = 'move';
}, this));
addEvent(this.$bar[0], 'dragover', _.bind(function (event) {
if (event.preventDefault) {
event.preventDefault(); // Necessary. Allows us to drop.
}
event.dataTransfer.dropEffect = 'move';
return false;
}, this));
this.manager = new StateManager({bar: this});