From 1c5bdd100cc5b6709495e56b9ce21c83ac461a5a Mon Sep 17 00:00:00 2001 From: huchenlei Date: Tue, 12 Aug 2025 21:44:01 -0400 Subject: [PATCH] [bugfix] Prevent toolbar remount animation when clicking textarea widgets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When clicking on a textarea DOM widget, it was triggering a selection update even if the node was already selected. This caused the toolbar to unnecessarily re-animate. The fix checks if the node is already selected before calling selectNode, preventing redundant selection updates while maintaining proper selection behavior for unselected nodes. Fixes #4953 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/components/graph/widgets/DomWidget.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/graph/widgets/DomWidget.vue b/src/components/graph/widgets/DomWidget.vue index 3da6b6231..b2841c0e0 100644 --- a/src/components/graph/widgets/DomWidget.vue +++ b/src/components/graph/widgets/DomWidget.vue @@ -140,8 +140,13 @@ const setupDOMEventListeners = () => { for (const evt of widget.options.selectOn ?? ['focus', 'click']) { useEventListener(widget.element, evt, () => { const lgCanvas = canvasStore.canvas - lgCanvas?.selectNode(widget.node) - lgCanvas?.bringToFront(widget.node) + if (!lgCanvas) return + + const node = widget.node + if (!node.is_selected) { + lgCanvas.selectItems([node]) + } + lgCanvas.bringToFront(node) }) } }