From 552452622d6da2d6781913730097f130f46bbe07 Mon Sep 17 00:00:00 2001 From: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:36:05 +0100 Subject: [PATCH] fix: context menu not opening when right-clicking different Vue nodes (#7644) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Fixed issue where right-clicking on one Vue node then another would close the context menu instead of repositioning it - Added `showNodeOptions` function that always shows the menu at the new position (used for contextmenu events) - Kept `toggleNodeOptions` for the "More Options" button where toggle behavior is expected ## Test plan - [ ] Right-click on a Vue node to open context menu - [ ] Right-click on a different Vue node - menu should immediately show for the new node - [ ] Click "More Options" button when menu is open - should close the menu - [ ] Click "More Options" button when menu is closed - should open the menu https://github.com/user-attachments/assets/bb31c2e4-12b4-4786-96ac-23b1e2b4daa0 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7644-fix-context-menu-not-opening-when-right-clicking-different-Vue-nodes-2ce6d73d36508145bc30fe6947b6808a) by [Unito](https://www.unito.io) --- src/components/graph/NodeContextMenu.vue | 2 +- src/composables/graph/useMoreOptionsMenu.ts | 12 ++++++++++++ .../extensions/vueNodes/components/LGraphNode.vue | 4 ++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/graph/NodeContextMenu.vue b/src/components/graph/NodeContextMenu.vue index 632108274..8382a43ec 100644 --- a/src/components/graph/NodeContextMenu.vue +++ b/src/components/graph/NodeContextMenu.vue @@ -263,7 +263,7 @@ function onMenuHide() { } onMounted(() => { - registerNodeOptionsInstance({ toggle, hide, isOpen }) + registerNodeOptionsInstance({ toggle, show, hide, isOpen }) }) onUnmounted(() => { diff --git a/src/composables/graph/useMoreOptionsMenu.ts b/src/composables/graph/useMoreOptionsMenu.ts index 061072e4a..96c677cd5 100644 --- a/src/composables/graph/useMoreOptionsMenu.ts +++ b/src/composables/graph/useMoreOptionsMenu.ts @@ -55,11 +55,23 @@ export function toggleNodeOptions(event: Event) { } } +/** + * Show the node options popover (always shows, doesn't toggle) + * Use this for contextmenu events where we always want to show at the new position + * @param event - The trigger event (must be MouseEvent for position) + */ +export function showNodeOptions(event: MouseEvent) { + if (nodeOptionsInstance?.show) { + nodeOptionsInstance.show(event) + } +} + /** * Hide the node options popover */ interface NodeOptionsInstance { toggle: (event: Event) => void + show: (event: MouseEvent) => void hide: () => void isOpen: Ref } diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index d11430fc6..f32b14c1c 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -136,7 +136,7 @@ import { computed, nextTick, onErrorCaptured, onMounted, ref, watch } from 'vue' import { useI18n } from 'vue-i18n' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' -import { toggleNodeOptions } from '@/composables/graph/useMoreOptionsMenu' +import { showNodeOptions } from '@/composables/graph/useMoreOptionsMenu' import { useErrorHandling } from '@/composables/useErrorHandling' import { st } from '@/i18n' import { @@ -290,7 +290,7 @@ const handleContextMenu = (event: MouseEvent) => { handleNodeRightClick(event as PointerEvent, nodeData.id) // Show the node options menu at the cursor position - toggleNodeOptions(event) + showNodeOptions(event) } onMounted(() => {