mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-20 23:04:06 +00:00
## Summary Prevents custom widget drag interactions from triggering node drag in vueNodes mode. Custom plugins like KJNodes Points Editor use their own drag handlers which were bubbling up to the node container. ## Screenshots (if applicable) before https://github.com/user-attachments/assets/bc4c3095-d454-45f6-a4ec-60178e8f47df after https://github.com/user-attachments/assets/a32a5591-120e-4842-a0e0-3dd972127376 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7953-fix-stop-pointer-mouse-event-propagation-in-vueNodes-widget-containers-2e56d73d3650810398f2c582a91d767b) by [Unito](https://www.unito.io)
37 lines
953 B
Vue
37 lines
953 B
Vue
<script setup lang="ts">
|
|
import { onMounted, ref } from 'vue'
|
|
|
|
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
|
import { isDOMWidget } from '@/scripts/domWidget'
|
|
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
|
|
|
|
// Button widgets don't have a v-model value, they trigger actions
|
|
const props = defineProps<{
|
|
widget: SimplifiedWidget<void>
|
|
nodeId: string
|
|
}>()
|
|
|
|
const domEl = ref<HTMLElement>()
|
|
|
|
const { canvas } = useCanvasStore()
|
|
onMounted(() => {
|
|
if (!domEl.value) return
|
|
const node = canvas?.graph?.getNodeById(props.nodeId) ?? undefined
|
|
if (!node) return
|
|
const widget = node.widgets?.find((w) => w.name === props.widget.name)
|
|
if (!widget || !isDOMWidget(widget)) return
|
|
domEl.value.replaceChildren(widget.element)
|
|
})
|
|
</script>
|
|
<template>
|
|
<div
|
|
ref="domEl"
|
|
@pointerdown.stop
|
|
@pointermove.stop
|
|
@pointerup.stop
|
|
@mousedown.stop
|
|
@mousemove.stop
|
|
@mouseup.stop
|
|
/>
|
|
</template>
|