diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index 828ee3c8c..531cbcaee 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -54,6 +54,7 @@ :node-data="nodeData" :readonly="readonly" :collapsed="isCollapsed" + :is-dragging="isDragging" @collapse="handleCollapse" @update:title="handleHeaderTitleUpdate" @enter-subgraph="handleEnterSubgraph" diff --git a/src/renderer/extensions/vueNodes/components/NodeHeader.vue b/src/renderer/extensions/vueNodes/components/NodeHeader.vue index 67ab22b32..6e4b4f84d 100644 --- a/src/renderer/extensions/vueNodes/components/NodeHeader.vue +++ b/src/renderer/extensions/vueNodes/components/NodeHeader.vue @@ -25,9 +25,12 @@
() +const { nodeData, readonly, collapsed, isDragging } = + defineProps() const emit = defineEmits<{ collapse: [] @@ -100,6 +105,7 @@ onErrorCaptured((error) => { // Editing state const isEditing = ref(false) +const titleRef = ref() const tooltipContainer = inject>('tooltipContainer') @@ -109,13 +115,40 @@ const { getNodeDescription, createTooltipConfig } = useNodeTooltips( ) const tooltipConfig = computed(() => { - if (readonly || isEditing.value) { + // Disable tooltip during editing or dragging + if (readonly || isEditing.value || isDragging) { return { value: '', disabled: true } } + const description = getNodeDescription.value return createTooltipConfig(description) }) +// Helper to hide tooltip immediately +const hideTooltip = () => { + // Find and remove the tooltip element that PrimeVue creates + // PrimeVue tooltips have class 'p-tooltip' + const tooltip = document.querySelector('.p-tooltip') + if (tooltip) { + tooltip.remove() + } +} + +// Watch isDragging to force tooltip hide +watch( + () => isDragging, + (newVal) => { + if (newVal) { + hideTooltip() + } + } +) + +const onTitlePointerDown = () => { + // Immediately hide tooltip on pointer down + hideTooltip() +} + const resolveTitle = (info: VueNodeData | undefined) => { const title = (info?.title ?? '').trim() if (title.length > 0) return title