From efe5028d5112491cf50a7044336812420a7c29df Mon Sep 17 00:00:00 2001 From: su-fen <715041@qq.com> Date: Wed, 3 Jun 2026 15:43:43 +0800 Subject: [PATCH] fix(project-tools): make project tabs reliably clickable --- .../project-tools/ProjectToolsPanel.tsx | 54 ++++++++++++------ .../project-tools/ProjectToolsPanel.tsx | 56 +++++++++++++------ 2 files changed, 77 insertions(+), 33 deletions(-) diff --git a/crates/agent-gateway/web/src/components/project-tools/ProjectToolsPanel.tsx b/crates/agent-gateway/web/src/components/project-tools/ProjectToolsPanel.tsx index c150a6ec..315a9e7e 100644 --- a/crates/agent-gateway/web/src/components/project-tools/ProjectToolsPanel.tsx +++ b/crates/agent-gateway/web/src/components/project-tools/ProjectToolsPanel.tsx @@ -1226,11 +1226,14 @@ export function ProjectToolsPanel(props: ProjectToolsPanelProps) { disabled={!canReorderTabs} tabIndex={canReorderTabs ? 0 : -1} className={cn( - "flex h-6 w-5 shrink-0 items-center justify-center rounded text-muted-foreground/45 opacity-70 transition-[background-color,color,opacity] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", + "relative z-10 flex h-6 w-5 shrink-0 items-center justify-center rounded text-muted-foreground/45 opacity-70 transition-[background-color,color,opacity] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", canReorderTabs ? "cursor-grab touch-none hover:bg-background/80 hover:text-foreground hover:opacity-100 focus-visible:bg-background focus-visible:text-foreground focus-visible:opacity-100 active:cursor-grabbing" : "cursor-default opacity-30", )} + onClick={() => { + consumeSuppressedTabClick(tabId); + }} onKeyDown={(event) => handleTabReorderKeyDown(event, tabId)} onPointerCancel={finishTabDrag} onPointerDown={(event) => handleTabPointerDown(event, tabId)} @@ -1246,6 +1249,7 @@ export function ProjectToolsPanel(props: ProjectToolsPanelProps) { handleTabPointerDown, handleTabPointerMove, handleTabReorderKeyDown, + consumeSuppressedTabClick, t, ], ); @@ -1571,7 +1575,7 @@ export function ProjectToolsPanel(props: ProjectToolsPanelProps) { key={tab.id} data-project-tools-tab-id={tab.id} className={cn( - "project-tools-panel-tab group flex h-8 max-w-[12rem] shrink-0 select-none items-center gap-1 rounded-md border border-transparent px-1.5 text-xs text-muted-foreground transition-[background-color,border-color,color,opacity,transform,box-shadow] hover:bg-muted/80 hover:text-foreground", + "project-tools-panel-tab group relative flex h-8 max-w-[12rem] shrink-0 select-none items-center gap-1 rounded-md border border-transparent px-1.5 text-xs text-muted-foreground transition-[background-color,border-color,color,opacity,transform,box-shadow] hover:bg-muted/80 hover:text-foreground", currentActiveTab === "fileTree" && "border-border bg-muted text-foreground shadow-sm", draggingTabId === tab.id && @@ -1579,26 +1583,31 @@ export function ProjectToolsPanel(props: ProjectToolsPanelProps) { )} title={t("projectTools.fileTreeTitle")} > - {renderTabDragHandle(tab.id, t("projectTools.fileTreeTitle"))} + + + + + +