From a05d34c7041d8d673af2e56d02cdc532d9ad98c7 Mon Sep 17 00:00:00 2001 From: Johnpaul Date: Sat, 6 Dec 2025 04:35:20 +0100 Subject: [PATCH] feat: bring node to front when clicking on any widget Adds a capture-phase pointerdown handler to NodeWidgets that calls bringNodeToFront whenever any widget is clicked, improving UX by ensuring the interacted node is always visible on top. --- .../extensions/vueNodes/components/NodeWidgets.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue index 441c988b2..8e179b660 100644 --- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue +++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue @@ -15,6 +15,7 @@ :style="{ 'grid-template-rows': gridTemplateRows }" + @pointerdown.capture="handleBringToFront" @pointerdown="handleWidgetPointerEvent" @pointermove="handleWidgetPointerEvent" @pointerup="handleWidgetPointerEvent" @@ -78,6 +79,7 @@ import { useErrorHandling } from '@/composables/useErrorHandling' import { st } from '@/i18n' import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions' import { useNodeTooltips } from '@/renderer/extensions/vueNodes/composables/useNodeTooltips' +import { useNodeZIndex } from '@/renderer/extensions/vueNodes/composables/useNodeZIndex' import WidgetDOM from '@/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue' // Import widget components directly import WidgetLegacy from '@/renderer/extensions/vueNodes/widgets/components/WidgetLegacy.vue' @@ -98,12 +100,20 @@ const { nodeData } = defineProps() const { shouldHandleNodePointerEvents, forwardEventToCanvas } = useCanvasInteractions() +const { bringNodeToFront } = useNodeZIndex() + function handleWidgetPointerEvent(event: PointerEvent) { if (shouldHandleNodePointerEvents.value) return event.stopPropagation() forwardEventToCanvas(event) } +function handleBringToFront() { + if (nodeData?.id != null) { + bringNodeToFront(String(nodeData.id)) + } +} + // Error boundary implementation const renderError = ref(null)