滚轮平滑滚动与滚动手感优化
- 日期:2026-07-17
- 提交:
feat(tui): 滚轮平滑滚动与滚动手感系统性优化 - 版本:
0.11.1-alpha.6
主文档鼠标滚轮滚动从固定跳行改为可配置的平滑滚动机制。
主要变化
- 按档位控制滑动效果
默认档位为"smooth":滚轮输入会累积,以约 8ms 每帧的节奏逐步推进,滚动手感更顺滑,而非生硬的逐格跳转。 - 快速滚动带加速度,但有上限
快速连续滚动时会自动加速度,每个档位都设置了上限。方向反转或静止一段时间后,加速度会重置,避免惯性失控。 - 边界处理更干净
到达顶部/底部、吸附、触底或空文档时,会清空滚动累积值。手动滚动到底部后,会自动恢复贴底跟随(鼠标拖选时除外,避免影响选区操作)。 - 全屏覆盖时暂停滚动动画
打开覆盖主文档的全屏模态框后,平滑滚动会暂停;关闭覆盖层后,不会因为后台已完成动画导致视口位置偏移。 - PageUp / PageDown 保持瞬时跳转
键盘翻页仍使用瞬时跳转,与滚轮动画分开处理:翻页追求效率,滚轮追求手感。
配置方式
在 config.toml 的 [tui] 段中配置:
补充说明:
- 当
motion = "reduced"时,无论scroll_animation如何配置,都强制使用瞬时滚动。 - 配置不认识的档位名称会直接报配置错误,不会静默回退。
本次更新同时优化了一个细节:滚动动画过程中沿滚动方向扩展 transcript 估算窗口,避免行数估算误差在动画中被放大为视口跳动。更多细节见 config.toml · scroll_animation 与 快捷键 · 鼠标滚轮。