Skip to content

TML-838 fix mixed pointer ownership - #20

Open
SeasonsChange422 wants to merge 1 commit into
mainfrom
fix/TML-838-pointer-owner
Open

TML-838 fix mixed pointer ownership#20
SeasonsChange422 wants to merge 1 commit into
mainfrom
fix/TML-838-pointer-owner

Conversation

@SeasonsChange422

Copy link
Copy Markdown
Member

目标

修复 TML-838 复审发现的两项混合输入 owner 丢失问题与次级 pointer 传播竞态,并提供真实 Chromium touch/pen 回归证据。

变更范围

  • 使用完整 (pointerId, pointerType) 管理右键菜单与相机 look owner,所有不同 pointer pair 均不得抢占或清除 owner。
  • 未知或次级 contextmenu 仅抑制默认行为;owner 仅由自身终止事件、buttons 归零、lost capture、blur、visibility 或超时恢复。
  • 在 viewport 捕获阶段阻断 owner 活跃期间的次级 pointer down/move/up/cancel,避免选择层与 OrbitControls 同帧消费。
  • 增加 unit 与 Chromium CDP touch/pen 回归,覆盖 owner 先建立、次级 pointer 先建立、复用 pointerId 但类型不同、视口外释放及精确菜单抑制序列。

验收标准

  • 次级 touch/pen contextmenu 不再清除活动 mouse owner。
  • 相同类型不同 ID、相同 ID 不同类型均不能抢占或清除 owner。
  • 次级 pointer 在目标/冒泡处理前被阻断,camera pose 与 selection 保持稳定。
  • 原 owner 在次级输入后仍可继续驱动,并可通过真实终止路径恢复。

测试结果

  • npm test: 98 个测试文件通过、1 个跳过;1,648 条测试通过、1 条跳过。
  • npx vitest run packages/studio/test/camera-drive-routing.test.tsx: 59/59 通过。
  • Chromium owner/touch/pen 定向 E2E: 7/7 通过。
  • npm run typecheck: 通过。
  • npm run lint: 0 error;4 条既有 Fast Refresh warning。
  • npm run build: 通过;保留既有 chunk size warning。
  • git diff --check origin/main..HEAD: 通过。

风险和回滚

改动仅限 viewport pointer 路由与对应测试,不涉及数据结构或持久化。若出现输入设备兼容性回归,可回滚提交 4cfe2f2;本 PR 不自行合并,等待原审查员复审。

Multica-Task: TML-838

Multica-Run: 430e8613-f55d-4f56-983b-e1616d677ed3
Co-authored-by: multica-agent <github@multica.ai>
@TML-BOT

TML-BOT commented Sep 5, 2026

Copy link
Copy Markdown

PR 规范检查结果

状态:通过
Head SHA:4cfe2f219a119dd899f8c6abc5fc66c5bfc441fe
策略版本:3

通过:

  • 目标分支 main 为默认分支
  • 分支名 fix/TML-838-pointer-owner 符合分支命名规则
  • PR 标题包含与正文元数据一致的完整 task_id TML-838
  • 正文包含 task_id / run_id 元数据,task_id 符合 ^[A-Z][A-Z0-9]*-[0-9]+$
  • 必需检查 cigit-governance 均通过
  • 无合并冲突
  • head 分支与 base 分支保持同步

下一步:等待仓库原生合并门禁(cigit-governance、分支保护)确认。

本评论仅作规范检查反馈,不阻止合并;最终合并资格由原生 cigit-governance 和分支保护决定。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants