From 2d3ab4a174683cd9fbddc275faa1caa90dbc1510 Mon Sep 17 00:00:00 2001 From: Frederic Salmen Date: Sun, 1 Sep 2024 10:38:18 +0200 Subject: [PATCH] Fix drag behavior to ignore internal drags but allow dragging the whole element when `draggable:true` --- @webwriter/core/view/editor/nodeviews.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/@webwriter/core/view/editor/nodeviews.ts b/@webwriter/core/view/editor/nodeviews.ts index 2284c90b..5e33089c 100644 --- a/@webwriter/core/view/editor/nodeviews.ts +++ b/@webwriter/core/view/editor/nodeviews.ts @@ -102,9 +102,14 @@ export class WidgetView implements NodeView { dom.addEventListener("keydown", e => this.emitWidgetInteract(e), {passive: true}) dom.addEventListener("click", e => this.emitWidgetInteract(e)) dom.addEventListener("touchstart", e => this.emitWidgetInteract(e), {passive: true}) - if(!this.node.type.spec.draggable) { - dom.addEventListener("dragstart", e => e.preventDefault()) - } + dom.addEventListener("dragstart", e => { + if(e.composedPath()[0] !== this.dom) { + e.stopPropagation() + } + else if(!this.node.type.spec.draggable) { + e.preventDefault() + } + }) // dom.addEventListener("selectstart", e => e.preventDefault()) } return dom