From 38a2d2fe68b02fe0ae2aa5398ce52f2a65335cdf Mon Sep 17 00:00:00 2001 From: yyh Date: Fri, 16 Jan 2026 14:07:07 +0800 Subject: [PATCH] fix(skill): isolate more button click from tree node click handling Use split button pattern to separate main content area from more button. This prevents click events on the more button from bubbling up to the parent element's click/double-click handlers, which caused unintended file opening when clicking the menu button multiple times. --- .../workflow/skill/file-tree/tree-node.tsx | 88 ++++++++++--------- 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/web/app/components/workflow/skill/file-tree/tree-node.tsx b/web/app/components/workflow/skill/file-tree/tree-node.tsx index 072b49553e..74e788266d 100644 --- a/web/app/components/workflow/skill/file-tree/tree-node.tsx +++ b/web/app/components/workflow/skill/file-tree/tree-node.tsx @@ -110,63 +110,69 @@ const TreeNode = ({ node, style, dragHandle }: NodeRendererProps) aria-selected={isSelected} aria-expanded={isFolder ? node.isOpen : undefined} className={cn( - 'group relative flex h-6 cursor-pointer items-center gap-2 rounded-md px-2', + 'group relative flex h-6 cursor-pointer items-center rounded-md px-2', 'hover:bg-state-base-hover', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-components-input-border-active', isSelected && 'bg-state-base-active', hasContextMenu && !isSelected && 'bg-state-base-hover', )} - onClick={handleClick} - onDoubleClick={handleDoubleClick} onKeyDown={handleKeyDown} onContextMenu={handleContextMenu} > -
- {isFolder + {/* Main content area - isolated click/double-click handling */} +
+
+ {isFolder + ? ( + + ) + : ( +
+ + {isDirty && ( + + )} +
+ )} +
+ + {node.isEditing ? ( - + ) : ( -
- - {isDirty && ( - + + > + {node.data.name} + )}
- {node.isEditing - ? ( - - ) - : ( - - {node.data.name} - - )} - + {/* More button - separate from main content click handling */}