fix(app-iced): 选项区变高时与版本列表对半分(S1)+ 中英出图注入 + 注释同步

D30 r1 视觉驳回的三条里,代码能修的两条:

1. **S1 版面**:带加载器版本列表的选项区在三栏档把版本列表从 6.0 行压到 2.4 行(1180×760
   实测 278px→110px,底缘切在第三行图标上)。`rows::TailShare::of` 现在让这类面板在**任何档位**
   都与列表对半分(`scrollable` 分支早已存在),另把加载器版本菜单改成**按条目数**占高
   (1 条 64px / 2 条 112px,原先只有 1 条也固定撑两行)。实测:列表回到 **245px = 5.3 行**。
2. **注释同步(S6)**:`options/view.rs` 模块头原先写「加载器分成两行」+ 两行示意,实际是
   六枚一行(末枚右缘约 404px / 正文列 424);那条「本轮无看图通道,未出截图」也换成实测值。

顺带(使能中文出图):`pages/mod.rs::demo_model` 读 `ULL_DL_LANG=zh` 把 `model.lang` 与下载页
目录一起切中文。之前 `LC_ALL=zh_CN.UTF-8` 对出图**完全无效**——页面文案来自 `model.lang`,
而 `Model::new` 写死 `En`、`demo_model` 不碰它(`i18n::detect_env` 不在这条链上)。

测试:`options/s1_tests.rs` 新增两条(菜单只按整行占高;带版本列表的选项区在每个档位都 Shared,
原版/不兼容仍 Pinned),`-p unlucky-app-iced` 862 passed。

未完成:S2 窄窗「滚到底」图——iced 0.14 没有自由函数 `scroll_to`,程序化滚动要手写
`widget::Operation`(约 40 行),本轮不拿半成品充数;面板 `scrollable` 的稳定 Id 已就位。
This commit is contained in:
AskaEth committed 2026-11-10 19:34:13 +08:00
1 parent 841c17152a
commit cd7813f8eb
7 files changed
+162 -18

No files matched your search

+13 -1
View File
@@ -111,6 +111,7 @@ pub(super) fn content<'a>(
let tail: Element<'a, Message> = match share {
TailShare::Pinned => tail,
TailShare::Shared => scrollable(tail)
.id(iced::widget::Id::new(PANEL_SCROLL_ID))
.height(Length::Fill)
.style(frame::scroll_style(ui))
.into(),
@@ -129,6 +130,12 @@ pub(super) fn content<'a>(
.into()
}
/// 面板那一层 `scrollable` 的 Id(M222 D30 r1 S2 的出图取证用,见 `pages::harness`)。
///
/// 用途只有一个:窄窗(chips 档 / 带版本列表的选项区)里面板自己可滚,出图要证明
/// 「实例名那格滚得到」——harness 拿到这个 Id 就能派一次 `scroll_to` 再拍。
pub(crate) const PANEL_SCROLL_ID: &str = "download-panel";
/// 列表与尾部面板怎么分这块高度(M125 缺陷 1 的修法)。
///
/// | 档 | 分法 | 为什么 |
@@ -159,11 +166,16 @@ impl TailShare {
/// 掉到 **4 整行**、下半块留 ≈160px 空画布(r1 复审 P2-1 实测:main 在 700×760 的
/// `Hint` 态是 7 整行——不是 8,第 8 条墨迹其实是 `Pick a version, then install` 那句
/// hint,横向范围对不上版本号;r2 修回 7 整行)。所以 `Hint` **在任何档位都钉死**。
pub(super) const fn of(tier: VersionRailTier, state: &PanelState<'_>) -> Self {
pub(super) fn of(tier: VersionRailTier, state: &PanelState<'_>) -> Self {
match (tier, state) {
(VersionRailTier::Chips, PanelState::Options(_) | PanelState::Install(_)) => {
Self::Shared
}
// M222 D30 r1 S1:**带加载器版本列表**的选项区在任何档位都太高。三栏档实测
// (1180×760)面板从 204px 涨到 372px,版本列表从 6.0 行(278px)被压到 2.4 行
// (110px)——列表底缘还切在第三行图标上。改成 Shared:两半各 ≈215px,
// 列表回到 4.6 行,面板自己可滚([`Self::Shared`] 那条 `scrollable` 分支已存在)。
(_, PanelState::Options(options)) if options.has_loader_versions() => Self::Shared,
_ => Self::Pinned,
}
}