Skip to content

输入翻译圆点打字期间不做镜像测量,停手 140ms(与逐段按钮悬停意图同一个常量)后对齐一次到新的末尾(#670) - #703

Merged
Teeeeeeeerry merged 2 commits into
mainfrom
feat/670-align-after-typing
Oct 5, 2026
Merged

Teeeeeeeerry merged 2 commits into
mainfrom
feat/670-align-after-typing

Conversation

@Teeeeeeeerry

Copy link
Copy Markdown
Owner

问题

#665 让多行文本框里的圆点贴文字末尾,但每次输入都重新做一次镜像测量。镜像测量会强制同步布局,挂在每次按键上必然影响打字手感。打字时圆点在哪儿没人看,打字卡顿却是立刻能感觉到的(ADR-0006)。

根因

圆点的 sync() 不分是聚焦、滚动还是打字引起的,一律当场调用 place()。在多行文本框里,place() 就是一次镜像测量。

修复

  • 打字引起的同步(input 事件,以及 输入翻译:contenteditable 的写回,编辑器状态与界面一致(#633) #656 的编辑宿主 DOM 变动)不再测量,只负责显示或隐藏;停手 SHOW_DELAY 后对齐一次
  • 延迟直接引用逐段翻译按钮悬停意图的 SHOW_DELAY(140ms,由来见按钮的注释):改为导出,同一个常量,不另写数字
  • 打字过程中圆点第一次浮出时,先放在回落位置(框内侧右下角),停手后再贴到末尾;不为这一次做镜像测量
  • 还在等停手时,滚动不触发测量(打字会让框内自动滚动),交给停手后的那次对齐
  • 聚焦、开关打开时照常当场对齐;失焦、隐藏、停用都会取消等待中的对齐

验证

  • 单元(生命周期注册表,假时钟,借回落分支观察位置):新增 5 条,修复前红 2 条,另 3 条是这一票的行为约束与回归保护
    • 延迟常量是 140
    • 连续打字期间框挪了位置,圆点不跟;差 1ms 不动,满 140ms 对齐到新位置
    • 打字时第一次浮出就有位置
    • 停手前失焦不再对齐
    • 聚焦时即刻对齐
  • 端到端 TC-E2E-135:在圆点的 shadow root 上记录每次镜像元素进出的时刻,在输入框上记录每次 input 的时刻
    • 连续打字后,最后一次输入之前零次测量
    • 停手后恰好测量一次,距最后一次输入不少于 130ms
    • 对齐到新的末尾,误差不超过 2px
    • 修复前红:同样的打字过程测量了 18 次
  • TC-E2E-134(输入翻译:多行文本框的圆点贴文字末尾(镜像测量)(#633) #665 的位置真值)照常通过:断言用重试等对齐
  • pnpm test 115 个文件 1423 条全绿;pnpm typecheck 通过;pnpm build 通过
  • pnpm test:e2e:core 91 过、2 跳过、1 不稳定:TC-E2E-95 是设置页站点规则,失败原因是启动浏览器上下文超时(setting up "context"),与本票无关,重试通过

Closes #670

Teeeeeeeerry and others added 2 commits October 5, 2026 12:33
Co-Authored-By: zhexuancai-uts <261878103+zhexuancai-uts@users.noreply.github.com>
@Teeeeeeeerry
Teeeeeeeerry merged commit c7a0093 into main Oct 5, 2026
6 checks passed
@Teeeeeeeerry
Teeeeeeeerry deleted the feat/670-align-after-typing branch October 5, 2026 01:49
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.

输入翻译:打字期间不重算圆点位置,停手后对齐一次(#633)

1 participant