edit | blame | history | raw

2026-06-17 hover 滚动调查

用户目标

以架构师视角调查 TagLauncher 当前 bug:hover 标签列表中的某个标签时,AppGrid 不再自动滚动到对应容器。只做代码/架构调查,不改源码。

已完成事项

  • 读取项目治理规则与系统化调试技能说明。
  • 检查当前 Git 状态,确认工作区已有大量未提交改动,未回滚、未覆盖。
  • 只读调查 src/Apptag/ContentView.swiftsrc/Apptag/TagNavigationView.swiftsrc/Apptag/AppGridCollectionView.swiftsrc/Apptag/DataLayer.swift
  • 追溯历史提交,确认 9d87dbe 曾引入 hover 滚动节流,f474c8a 为修复抖动有意删除 hover 滚动。

关键结论

  • 当前 hover 事件仍从 TagNavigationButton.mouseEntered 传到 ContentView.handleTagNavigationHover
  • 当前 handleTagNavigationHover 只更新 tagNavigationHoveredGroupName 并调用 fillColorlessContainer,不再调用 scrollTo
  • AppGrid 滚动管线本身仍存在:ContentView.scrollTo 更新 scroll target/token,AppGridCollectionHostView.applyCoordinatorUpdate 根据 token 调用 NSCollectionView.scrollToItems
  • 主因是 f474c8a Release 7.8.23 App Grid hover stability 删除了 scrollToTagFromHover、节流状态和 hover active 分支中的滚动调用;这是历史产品取舍,不是底层滚动能力失效。

推荐方向

  • 如果产品目标恢复 hover 自动滚动,建议在 ContentView.handleTagNavigationHover 的 active 分支恢复受控的 hover-scroll helper。
  • 必须保留节流/去抖,并在 appGridInteraction.appDragModeActive、离开 hover、拖拽重排场景下避免触发滚动,以免重现 7.8.23 记录的抖动。
  • 不建议改 AppGrid 布局算法、NSCollectionView 滚动实现、拖拽/drop、Quick Search、窗口层级或数据分组逻辑。

未决问题

  • 需要产品确认:恢复 hover 自动滚动是否优先于 7.8.23 当时规避的 hover/scroll 抖动。
  • 如进入修复,应增加最小回归验证:hover 标签触发滚动、点击标签仍触发滚动、App 拖拽到标签栏时不触发导航滚动、快速扫过标签不会明显抖动。