github urbanescavenger/BiliMT v3.1.1-alpha.14

pre-release3 hours ago

影视搜索结果按 ↓ 焦点逃到侧栏「番剧」、进不了结果网格(P11-267 / P11-268)。

变更

  • 现象:影视搜到结果后,焦点停在「影视」类型 chip,按 ↓ 直接跳到侧栏的「番剧」分区,结果卡片选不中。
  • 根因一(P11-267):TvVideoGrid.moveFocus 末行 ↓ 找不到下一行时返回 false,把按键漏给 Compose
    默认焦点遍历;遍历按几何在网格外找 focusable,侧栏分区列表正好可选 ⇒ 焦点逃出网格。原注释以为
    「没有 footer 时遍历找不到下方焦点」,实测不成立。影视结果通常只有一行,所以最先暴露。
  • 根因二(P11-268):结果首卡只挂 firstResultFocusRequester(item 0),单帧 requestFocus 在网格
    刚重建/首项尚未挂载时会落空;而自动聚焦那条 effect 落空后照样消费 focusFirstResult ⇒ 焦点永远停在
    类型 chip 上。之后每次 ↓ 也只是重复失败。
  • 改动:①末行 ↓ 只在有 footer(加载失败重试按钮)时漏给默认遍历,footer == None 时吞掉按键;
    ②新增按帧重试(FirstResultFocusRetryCount = 12,≈200ms):标题 / 排序 chip / 类型 chip 的 ↓ 都会重试
    请求首卡焦点,无论成败都吞掉按键;③自动聚焦 effect 同样重试,成功才 break,循环结束才消费标志。
  • 真机判据:影视搜索出结果后,从「影视」chip 按 ↓ 能进结果网格并选中卡片;结果只有一行时末行 ↓
    焦点不动;任何时刻焦点都不会跳到侧栏分区。

Don't miss a new BiliMT release

NewReleases is sending notifications on new releases.