Fix shape dragging - allow drag from header elements
This commit is contained in:
parent
36df10efe2
commit
7ebf45e984
|
|
@ -318,10 +318,14 @@ export class FolkShape extends FolkElement {
|
||||||
handle = focusedElement.getAttribute("part") as Handle | null;
|
handle = focusedElement.getAttribute("part") as Handle | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if target is a drag handle (header or element with data-drag attribute)
|
||||||
|
const isDragHandle = target?.closest?.(".header, [data-drag]") !== null;
|
||||||
|
|
||||||
if (event instanceof PointerEvent) {
|
if (event instanceof PointerEvent) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
if (event.type === "pointerdown") {
|
if (event.type === "pointerdown") {
|
||||||
if (target !== this && !handle) return;
|
// Allow drag from: the host itself, a handle, or a drag handle element
|
||||||
|
if (target !== this && !handle && !isDragHandle) return;
|
||||||
|
|
||||||
if (handle?.startsWith("rotation")) {
|
if (handle?.startsWith("rotation")) {
|
||||||
const parentRotateOrigin = this.#rect.toParentSpace({
|
const parentRotateOrigin = this.#rect.toParentSpace({
|
||||||
|
|
@ -373,7 +377,7 @@ export class FolkShape extends FolkElement {
|
||||||
|
|
||||||
if (!moveDelta) return;
|
if (!moveDelta) return;
|
||||||
|
|
||||||
if (target === this || (!handle && event instanceof KeyboardEvent)) {
|
if (target === this || isDragHandle || (!handle && event instanceof KeyboardEvent)) {
|
||||||
if (event instanceof KeyboardEvent && event.altKey) {
|
if (event instanceof KeyboardEvent && event.altKey) {
|
||||||
const ROTATION_MUL = event.shiftKey ? Math.PI / 12 : Math.PI / 36;
|
const ROTATION_MUL = event.shiftKey ? Math.PI / 12 : Math.PI / 36;
|
||||||
const rotationDelta = moveDelta.x !== 0 ? (moveDelta.x > 0 ? ROTATION_MUL : -ROTATION_MUL) : 0;
|
const rotationDelta = moveDelta.x !== 0 ? (moveDelta.x > 0 ? ROTATION_MUL : -ROTATION_MUL) : 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue