fix(app-iced): M107 r1 复审五条 p2 —— 搜索与主版本桶一致、chips 可滚、单复数、端到端
复审 r1(p2-5items / fix-then-merge)的五条可达问题,逐条落点: - **P2-1** 搜索命中数与主版本桶不再自相矛盾:`group::active_bucket` 让第二级在搜索期间 **自动放宽到「全部」**(选择本身留在模型里,清空搜索后回来),侧栏点亮「全部版本」⇒ 没有幽灵选中; `rebuild_after_query` 回填时校验桶仍存在(新桶列表里没有的选择直接丢弃)。 判据:`a_search_hit_never_lands_on_an_empty_list`(4 分类 × 5 桶值 × 4 查询词的矩阵)+ 出图 11 - **P2-2** chips 档的主版本行套**横向滚动**(显式滚动条),竖栏与 chips 吃同一份 `major_entries`; 22 桶夹具断言最后一个桶 `1.0` 在列表里,出图 12 看得到滚动条 - **P2-3** 只做搜索这条路径(`rebuild_after_query` + 校验 + app 层测试);`app/state.rs::refresh_view` 的全量修法**留到 M105 之后**(不在 scope,且 M105 正改同一片文件)——报告里明写 - **P2-4** `1 matches` 修掉:新增 `VersionSearchHitsOne` / `VersionSearchElsewhereOne` 两条单数 key, 「在别处」用独立标题(不再拿命中数当标题,同屏一个数只报一次) - **P2-5** 搜索链路补 4 条 **app 层端到端**(键入 → 快照 → 重建 → 列表);变异自证: 删 `self.state.download_query = query` ⇒ 2 条红;`from_snapshot` 忽略 query ⇒ 8 条红; 去掉 `active_bucket` 的放宽 ⇒ 4 条红 - 顺带:64 宽图标条每项挂 tooltip(复审建议);`install.rs` 那段自相矛盾的文档订正 门禁:fmt 0 / app-iced lib 431 passed / workspace --exclude unlucky-app 全绿(见报告)
This commit is contained in:
1 parent
89a51a63b1
commit
45544791e5
11 files changed
+622
-56
No files matched your search
@@ -144,5 +144,26 @@ pub fn buckets(rows: &[super::model::VersionRow]) -> Vec<Bucket> {
|
||||
grouped
|
||||
}
|
||||
|
||||
/// 第二级侧栏此刻**真正生效**的桶(P2-1 的口径)。
|
||||
///
|
||||
/// 搜索时一律放宽到「全部」([`None`]):命中数 `hits` 是**跨桶**读数,若列表还按桶过滤,
|
||||
/// 就会出现「N matches + 0 versions + 没有版本」的自相矛盾一屏(复审 P2-1)。
|
||||
/// 放宽之后「列表行数 = 当前分类里的命中数」,侧栏也不会有「选中项不在桶列表里」的幽灵态。
|
||||
/// `selected_major` 一直留在模型里,只是搜索期间不生效——清空搜索后原来的桶自动回来。
|
||||
#[must_use]
|
||||
pub fn active_bucket<'a>(model: &'a super::model::Download) -> Option<&'a str> {
|
||||
if model.has_query() {
|
||||
None
|
||||
} else {
|
||||
model.selected_major.as_deref()
|
||||
}
|
||||
}
|
||||
|
||||
/// 第二级侧栏里这一项该不该点亮(`None` = 「全部版本」那一项)。
|
||||
#[must_use]
|
||||
pub fn bucket_selected(model: &super::model::Download, key: Option<&str>) -> bool {
|
||||
active_bucket(model) == key
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
Reference in new issue
Block a user