docs(app-iced): 按 TailShare::of 的真实分支清扫下载页面板注释(r7 三条 + 全量扫)

(i) 上轮新引入的错误声明 rescope:错误行「恒为 None / 滚动区只有 head+chips」只在**三栏档 +
    带版本列表**这一支成立(has_loader_versions() 要求 problem.is_none())。**chips 档**(可用宽
    < 600,TailShare::of 对 Options/Install 无条件 Shared)里 problem 可以是 Some(静态不兼容 /
    列表取不到 / 空表三种),错误行会进滚动区且可能被滚走;show_versions() 为假时钉死区只剩
    实例名。install.rs 与 options/view.rs 都按这两支分别写清,并注明该行为域由 M227 重设计。
(ii) install.rs 的「显式给对半分档标志」「对半分:面板吃满自己那一半」改成预算优先口径
    (与同文件十行上方「不是早期的对半分」不再矛盾)。
(iii) rows.rs 三处:三栏档「照旧钉死」限定为「**不带版本列表**的选项区」;`content` 的 share
     说明改成引用 TailShare::of 的真实两支,不再复述「三栏钉死 / chips 各吃一半」;
     「只有对半分那一档才按整行取高」改成「只有 Shared(面板先保预算)那一档」。

全量扫附带修正:tail.rs 的 ROW_PITCH / PANEL_BUDGET 账(760 例改成 176/437、900 改成 569;
预算拆成滚动区 76 + 钉死区 153);options/model.rs 的 has_loader_versions 文档改成预算口径。

零代码零测试变更。
This commit is contained in:
AskaEth committed 2026-11-10 19:34:15 +08:00
1 parent 409c742aa8
commit a16aadd467
5 files changed
+38 -23

No files matched your search

@@ -15,7 +15,8 @@
//!
//! - **钉死档**(原版等不带版本列表的面板)走另一条路:标签、说明、菜单、实例名都在同一列里
//! 顺序铺开(`04` 基线图就是这一档,不能改);
//! - 不兼容时的原因行(Error 色)在滚动区末尾;
//! - 不兼容时的原因行(Error 色)在滚动区末尾(**chips 档**可达;三栏档 + 带版本列表时
//! `problem` 恒为 `None`,所以那支看不到它);
//! - 说明只有 LiteLoader 有(`Key::DownloadOptionsLiteLoaderVanillaOnly`)。
//!
//! ## 为什么加载器是**六枚一行**(M222 D30 r1 实测订正)
@@ -73,14 +74,17 @@ pub(super) fn version_menu_height(items: usize) -> f32 {
///
/// `scroll` = 面板此刻是不是「自己可滚」的那一档(`rows::TailShare::Shared`)。是的话:
///
/// - **滚动区**:head(版本 id + 安装按钮)+ 六枚加载器 chips + 错误行;
/// - **滚动区**:head(版本 id + 安装按钮)+ 六枚加载器 chips(**chips 档**还可能有错误行,见下);
/// - **钉死区**:说明行(有说明时;否则是「加载器版本」标签)+ 版本菜单 + 实例名输入框。
///
/// 为什么菜单也要钉(D30 四审):裁切位置由**钉死区高度**决定,与窗宽无关(1180 与 720 都切在
/// 同一个 y)。之前只钉实例名,菜单就正好落在切线上——760 下菜单容器 642–706 只有 18px 可见、
/// 条目文字一格都没画出来。把菜单一起钉住之后,它不再依赖首屏剩余高度分配,可达性由结构保证;
/// 滚动区里只有 head 与 chips 两块,用户可见内容**不会被滚走**(错误行在 Shared 档恒为
/// `None`:静态不兼容时不画版本菜单、走的是上面 `!scroll` 那条路)。
/// **两个 Shared 分支不一样**(`rows/tail.rs::TailShare::of`):
/// - 三栏档 + 带版本列表:`has_loader_versions()` 要求 `problem.is_none()` ⇒ 滚动区只有
/// head + chips,错误行不可达;
/// - chips 档(可用宽 < 600,`of` 对 `Options`/`Install` 无条件 Shared):`problem` 可以是
/// `Some`,错误行**会进滚动区**、可能被滚走;`show_versions()` 为假时钉死区只剩实例名。
/// D30 八审实测:滚动区可见高 ≈96–104px,内容(head 40 + chips 32 + 间距 4)≈76px ⇒
/// 1180×760 下 head(墨迹 462–501)与六枚 chips(506–537,32px 四角闭合)完整在首屏。
pub(crate) fn section<'a>(
@@ -159,7 +163,7 @@ pub(crate) fn section<'a>(
return plain.into();
}
// 滚动区只剩 head + 六枚 chips(方案 B,D30 六审裁决)。
// 滚动区只剩 head + 六枚 chips(方案 B,D30 六审裁决;chips 档还可能有错误行,见 `section` 文档)。
//
// 为什么把「安装选项」标签与中性说明都撤出滚动区:
// 五审 82px → 六审 103px 的视口里,head(40) + 标签(17) + chips(32) + 两处间距(16) = 105px,