fix(app-iced): M125 r2 —— chips 档「还没选版本」不再对半切;宽度表换成实测值
r1 复审 p2-1:`TailShare::of` 只判档位,于是 chips 档「刚进页面」(面板只有一行 提示)也被五五分——700×760 下列表 8 个版本只显示 4 个、下半块 ≈160px 空画布, 而修前(main)这一态是 7 整行。修法:判据加**面板形态**,`Hint` 在任何档位都钉死, `Chips` + `Options`/`Install` 才共享。实测回到 7 整行(与 main 同一水位)。 守门:新增 `options_shot/ready.rs`(`ULL_DL_READY_SHOT`,不设 `ULL_DL_DEMO` 出的 700×760 图):列表区至少读出 6 个版本号。它在 r1 的图上**红**(4 个,原生输出见 mission 报告),在修后图上绿(7 个)。三条旧守门照旧(chips / compact / wide), chips 与 compact 换修前图仍红。 r1 复审 p2-2:宽度表的实测值改正(同一张 736 图逐项量): `1.21` 26(余 6)、`1.20` 28(余 4)、`24w` **29**(余 3)、`All versions` 墨迹画到 x=247(裁切边 248,只差 1px)⇒ 桶标签余量是 **3~6px** 而不是 6;「短标签『全部』= 32 零余量」这条论证的对比强度随之写准(比桶标签的 3~6px 更薄)。 `rails/major.rs` 的表格、`options_shot/compact.rs` 的测试文档一并改成实测值; 「墨迹右边界」那条反例也从 216..244 改成实测 216..247。 r1 复审 p3-1:第二级「全部版本」的图标从网格(与第一级同字形同药丸、像素级同形) 换成文档/清单字形 `IconKind::Logs`,理由与「图标集里没有版本/历史字形」写进 `major_shape` 文档。 r1 复审 p3-2:chips 档最多三层滚动(列表 / 面板 / loader 菜单)作为**已知风险** 登记在 `install.rs` 文档里,并写明为什么「把实例名移出滚动区」本轮不做(要拆 `options::section`,动三个文件,而且改完仍无法验证滚轮冒泡——没有通道)。
This commit is contained in:
1 parent
9c623a6fd3
commit
0f26ed3753
9 files changed
+283
-58
No files matched your search
@@ -0,0 +1,79 @@
|
||||
//! 「还没选版本」那一态(`ULL_DL_DEMO` 不设 = `ready`)的像素守门:r1 复审 P2-1。
|
||||
//!
|
||||
//! ## 为什么要单独守这一态
|
||||
//!
|
||||
//! M125 r1 的 `TailShare::of` **只判档位**,于是 chips 档的「刚进页面」也被五五分:
|
||||
//! 面板里只有一行提示(`PanelState::Hint`,≈30px),却拿走一半高度 ⇒ 700×760 下
|
||||
//! 8 个版本只显示 **4** 个、下半块留 ≈160px 空画布(修前是 8 行全在屏)。
|
||||
//! 同目录 `chips.rs` 只拍「选中 + 选项区展开」,正是这个盲区把回归放了过去。
|
||||
//!
|
||||
//! 现在的判据:`Chips` **且**面板真占高度(`Options` / `Install`)才共享;
|
||||
//! `Hint` 在任何档位都钉死(见 `rows::TailShare::of`)。
|
||||
//!
|
||||
//! ```text
|
||||
//! # 不设 ULL_DL_DEMO(= ready)出 700×760 那张
|
||||
//! cargo run -p unlucky-app-iced --example pages_demo -- \
|
||||
//! --screen=download --width=700 --height=760 --screenshot=ready700.png \
|
||||
//! --screenshot-theme=light --software-renderer
|
||||
//! ULL_DL_READY_SHOT=ready700.png cargo test -p unlucky-app-iced --lib options_shot
|
||||
//! ```
|
||||
//!
|
||||
//! 抓得住:①列表区 **≥ 6 整行**(数版本号那列的墨迹条数,行距 44);②尾部(提示那条
|
||||
//! 分隔线)在 6 行之后——五五分时它落在第 4 行下方,两条都立刻红。
|
||||
//! 抓不住:提示文案本身、hover/tooltip 层(静态图拍不到);也不管「选中且展开」那一态
|
||||
//!(那是 `chips.rs` 的活)。
|
||||
|
||||
use super::{bands, shot_path, ui, Shot, READY_SHOT};
|
||||
|
||||
/// `ready` 那一态(700×760):8 个版本里至少 6 行要在屏,尾部提示不许把列表压扁。
|
||||
///
|
||||
/// 修前实测(M125 r1,`TailShare::of` 只判档位的版本):列表区 `374..559` = 185px = 4 行,
|
||||
/// 版本号那列只有 4 条墨迹;面板那半块 185px 里只有一行 `Pick a version, then install`,
|
||||
/// 其余是空白 —— 这条断言在那种图上是红的(4 < 6)。
|
||||
#[test]
|
||||
fn a_ready_shot_keeps_the_whole_visible_list() {
|
||||
let Some(path) = shot_path(READY_SHOT) else {
|
||||
eprintln!("[options-shot] SKIPPED:未设置 {READY_SHOT}。");
|
||||
return;
|
||||
};
|
||||
let shot = Shot::load(&path);
|
||||
assert_eq!(shot.width, 700, "这条只认 700×760 那张(chips 档)");
|
||||
|
||||
let bands = bands(700.0);
|
||||
let canvas = shot.at(bands.list.0 + 2, 12);
|
||||
let metrics = ui().metrics();
|
||||
let right = bands.list.0 + bands.list.1 as usize - 2;
|
||||
|
||||
// ① 第一行版本号的墨迹带(ready 态没有选中行,所以量的是**文本**而不是底色;
|
||||
// x 取 `+100` 落在版本号那几个字上——`+60` 会落进「前置下载图标」与文字之间的空档)
|
||||
let (first_ink, _) = shot
|
||||
.first_filled_band(bands.list.0 + 100, 360, 440, canvas)
|
||||
.expect("列表列里应当有版本行");
|
||||
|
||||
// ② 尾部(提示)上沿的分隔线:它上面的高度才是列表拿到的
|
||||
let rule = shot
|
||||
.first_rule_y(bands.list.0, right, first_ink, canvas)
|
||||
.expect("找不到尾部那条分隔线(列表区的下界量不出来)");
|
||||
|
||||
// ③ 数得出几个版本号:8 行里至少 6 行在屏
|
||||
let rows = shot.ink_bands(
|
||||
bands.list.0 + 50,
|
||||
bands.list.0 + 140,
|
||||
first_ink,
|
||||
rule,
|
||||
canvas,
|
||||
);
|
||||
assert!(
|
||||
rows >= 6,
|
||||
"ready 态只读得出 {rows} 个版本号(要求 ≥ 6 个,演示数据共 8 个):\
|
||||
面板那一行提示把列表对半切了(列表区 y={first_ink}..{rule},\
|
||||
共 {}px,行高 {})",
|
||||
rule - first_ink,
|
||||
metrics.row_height
|
||||
);
|
||||
assert!(
|
||||
(rule - first_ink) as f32 >= 6.0 * metrics.row_height - metrics.row_height / 2.0,
|
||||
"ready 态的列表区只有 {}px(y={first_ink}..{rule}),不足 6 整行",
|
||||
rule - first_ink
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user