Fix: Improve drag-and-drop handling for operations in Safari
This commit is contained in:
parent
1eccfa729b
commit
5f999b4d75
@ -183,10 +183,11 @@ class OperationsWaiter {
|
|||||||
* @param {Element} el - The element to start selecting from
|
* @param {Element} el - The element to start selecting from
|
||||||
*/
|
*/
|
||||||
enableOpsListPopovers(el) {
|
enableOpsListPopovers(el) {
|
||||||
|
const self = this;
|
||||||
$(el).find("[data-toggle=popover]").addBack("[data-toggle=popover]")
|
$(el).find("[data-toggle=popover]").addBack("[data-toggle=popover]")
|
||||||
.popover({trigger: "manual"})
|
.popover({trigger: "manual"})
|
||||||
.on("mouseenter", function(e) {
|
.on("mouseenter", function(e) {
|
||||||
if (e.buttons > 0) return; // Mouse button held down - likely dragging an operation
|
if (e.buttons > 0 || self.manager.recipe.dragInProgress) return; // Mouse button held down - likely dragging an operation
|
||||||
const _this = this;
|
const _this = this;
|
||||||
$(this).popover("show");
|
$(this).popover("show");
|
||||||
$(".popover").on("mouseleave", function () {
|
$(".popover").on("mouseleave", function () {
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class RecipeWaiter {
|
|||||||
this.app = app;
|
this.app = app;
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
this.removeIntent = false;
|
this.removeIntent = false;
|
||||||
|
this.dragInProgress = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,6 +89,7 @@ class RecipeWaiter {
|
|||||||
* @param {element} listEl - The list to initialise
|
* @param {element} listEl - The list to initialise
|
||||||
*/
|
*/
|
||||||
createSortableSeedList(listEl) {
|
createSortableSeedList(listEl) {
|
||||||
|
const self = this;
|
||||||
Sortable.create(listEl, {
|
Sortable.create(listEl, {
|
||||||
group: {
|
group: {
|
||||||
name: "recipe",
|
name: "recipe",
|
||||||
@ -99,6 +101,7 @@ class RecipeWaiter {
|
|||||||
dataTransfer.setData("Text", dragEl.textContent);
|
dataTransfer.setData("Text", dragEl.textContent);
|
||||||
},
|
},
|
||||||
onStart: function(evt) {
|
onStart: function(evt) {
|
||||||
|
self.dragInProgress = true;
|
||||||
// Removes popover element and event bindings from the dragged operation but not the
|
// Removes popover element and event bindings from the dragged operation but not the
|
||||||
// event bindings from the one left in the operations list. Without manually removing
|
// event bindings from the one left in the operations list. Without manually removing
|
||||||
// these bindings, we cannot re-initialise the popover on the stub operation.
|
// these bindings, we cannot re-initialise the popover on the stub operation.
|
||||||
@ -126,6 +129,7 @@ class RecipeWaiter {
|
|||||||
* @param {event} evt
|
* @param {event} evt
|
||||||
*/
|
*/
|
||||||
opSortEnd(evt) {
|
opSortEnd(evt) {
|
||||||
|
this.dragInProgress = false;
|
||||||
if (this.removeIntent && evt.item.parentNode.id === "rec-list") {
|
if (this.removeIntent && evt.item.parentNode.id === "rec-list") {
|
||||||
evt.item.remove();
|
evt.item.remove();
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user