From d779d96d77ea186dc15e5a21b8e01c4f4d3d53e3 Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Wed, 24 Jun 2026 16:12:03 +0800 Subject: [PATCH 1/2] fix: skip click cell after resize --- ...86-skip-click-after-resize_2026-06-24-16-11.json | 11 +++++++++++ packages/vtable/src/event/listener/table-group.ts | 13 +++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 common/changes/@visactor/vtable/codex-fix-issue-5186-skip-click-after-resize_2026-06-24-16-11.json diff --git a/common/changes/@visactor/vtable/codex-fix-issue-5186-skip-click-after-resize_2026-06-24-16-11.json b/common/changes/@visactor/vtable/codex-fix-issue-5186-skip-click-after-resize_2026-06-24-16-11.json new file mode 100644 index 000000000..8ee2a2d78 --- /dev/null +++ b/common/changes/@visactor/vtable/codex-fix-issue-5186-skip-click-after-resize_2026-06-24-16-11.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: skip click cell after resize interaction ends", + "type": "patch", + "packageName": "@visactor/vtable" + } + ], + "packageName": "@visactor/vtable", + "email": "892739385@qq.com" +} diff --git a/packages/vtable/src/event/listener/table-group.ts b/packages/vtable/src/event/listener/table-group.ts index fbecb8818..e9d633ffd 100644 --- a/packages/vtable/src/event/listener/table-group.ts +++ b/packages/vtable/src/event/listener/table-group.ts @@ -617,15 +617,20 @@ export function bindTableGroupListener(eventManager: EventManager) { // 只处理左键 return; } + const endedResizeCol = stateManager.isResizeCol(); + const endedResizeRow = stateManager.isResizeRow(); + const endedMoveCol = stateManager.isMoveCol(); + const endedDragSelect = stateManager.isSelecting() && table.eventManager.isDraging; + const shouldSkipClickCell = endedResizeCol || endedResizeRow || endedMoveCol || endedDragSelect; if (stateManager.interactionState === 'grabing') { // stateManager.interactionState = 'default'; stateManager.updateInteractionState(InteractionState.default); // eventManager._resizing = false; - if (stateManager.isResizeCol()) { + if (endedResizeCol) { endResizeCol(table); - } else if (stateManager.isResizeRow()) { + } else if (endedResizeRow) { endResizeRow(table); - } else if (stateManager.isMoveCol()) { + } else if (endedMoveCol) { // const eventArgsSet: SceneEvent = getCellEventArgsSet(e); const endMoveColSuccess = table.stateManager.endMoveCol(); fireMoveColEventListeners(table, endMoveColSuccess, e.nativeEvent); @@ -658,7 +663,7 @@ export function bindTableGroupListener(eventManager: EventManager) { stateManager.updateInteractionState(InteractionState.default); // scroll end } - if (!table.eventManager.isDraging) { + if (!table.eventManager.isDraging && !shouldSkipClickCell) { // 从pointertap中挪过来的这段逻辑 const eventArgsSet: SceneEvent = getEventArgsSet(e); if ( From aca085d8b52e60c3201ebed5e23ad609cee9882c Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Thu, 25 Jun 2026 10:25:11 +0800 Subject: [PATCH 2/2] fix: shouldSkipClickCell set value --- packages/vtable/src/event/listener/table-group.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vtable/src/event/listener/table-group.ts b/packages/vtable/src/event/listener/table-group.ts index e9d633ffd..4023cac00 100644 --- a/packages/vtable/src/event/listener/table-group.ts +++ b/packages/vtable/src/event/listener/table-group.ts @@ -620,8 +620,8 @@ export function bindTableGroupListener(eventManager: EventManager) { const endedResizeCol = stateManager.isResizeCol(); const endedResizeRow = stateManager.isResizeRow(); const endedMoveCol = stateManager.isMoveCol(); - const endedDragSelect = stateManager.isSelecting() && table.eventManager.isDraging; - const shouldSkipClickCell = endedResizeCol || endedResizeRow || endedMoveCol || endedDragSelect; + // const endedDragSelect = stateManager.isSelecting() && table.eventManager.isDraging; + const shouldSkipClickCell = endedResizeCol || endedResizeRow; if (stateManager.interactionState === 'grabing') { // stateManager.interactionState = 'default'; stateManager.updateInteractionState(InteractionState.default);