From 409c742aa8224f85a946b357511a95f2faf5e35f Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 10 Nov 2026 18:52:02 +0800 Subject: [PATCH] =?UTF-8?q?docs(app-iced):=20=E6=89=AB=E6=8E=89=20r6=20?= =?UTF-8?q?=E7=9A=84=E4=B8=89=E5=A4=84=E6=96=87=E6=A1=A3=E6=AE=8B=E7=95=99?= =?UTF-8?q?=EF=BC=88B=20=E7=BB=93=E6=9E=84=E5=90=88=E5=85=A5=E5=89=8D?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E6=94=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (a) install.rs 的 panel/panel_with 文档按当前结构重写:`shared` 不再是「对半分」(现为 面板先保预算 + 列表按整行,见 rows/tail.rs::whole_rows);滚动区实际只有 head + 六枚 chips (菜单 9358668 进钉死区、说明 a6f7974 进钉死区),钉死区 = 说明或标签 + 菜单 + 实例名; 并写明错误行在 Shared 档恒为 None(静态不兼容时不画版本菜单、走不滚动那条路)。 (b) options/view.rs 里「标签与说明都搬到钉死区」自相矛盾:改成「**说明**搬到钉死区; 『安装选项』标签在 Shared 档**删掉**(八审裁决),Pinned 档保留」。 (c) 同文件 section() 文档里「滚动区溢出时被滚走的是错误行」描述的是不可达情形:改成 「滚动区只有 head + chips,用户可见内容不会被滚走(错误行在 Shared 档恒为 None)」。 零代码零测试变更。 --- crates/app-iced/src/pages/download/install.rs | 13 ++++++++++--- crates/app-iced/src/pages/download/options/view.rs | 6 ++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/crates/app-iced/src/pages/download/install.rs b/crates/app-iced/src/pages/download/install.rs index bd97b5d..35656d0 100644 --- a/crates/app-iced/src/pages/download/install.rs +++ b/crates/app-iced/src/pages/download/install.rs @@ -110,9 +110,16 @@ pub(super) fn panel_state(model: &Download) -> PanelState<'_> { /// 底部的安装面板。 /// -/// `shared` = 这一档列表与面板对半分(`rows::TailShare::Shared`)。此时**选项区自己滚**: -/// 上半块(加载器 chip / 说明 / 版本列表 / 错误行)收进 `scrollable` 吃 `Fill`,实例名那一格 -/// 钉成页脚——D30 r2 S7:面板变高后实例名会被挤出首屏,钉住之后可达性由结构保证。 +/// `shared` = 选项区走「面板先保预算、列表按整行吃剩下的」那一档(`rows::TailShare::Shared` +/// 的带版本列表分支;分高规则见 `rows/tail.rs::whole_rows`,**不是**早期的「对半分」)。 +/// 此时选项区自己分成两段(`options::section`): +/// +/// - **滚动区**:head(版本 id + 安装按钮)+ 六枚加载器 chips; +/// - **钉死区**:说明行(有说明时;否则是「加载器版本」标签)+ 版本菜单 + 实例名输入框。 +/// +/// 菜单与说明分别是 D30 四审 / 八审搬进钉死区的(裁切位置由钉死区高度决定,与窗宽无关); +/// 错误行在 Shared 档恒为 `None`(`OptionsView::problem` 只在静态不兼容时出现,而那时 +/// 不画版本菜单、走的是不滚动的那一路),所以滚动区里只会有 head + chips 这两块。 pub(super) fn panel<'a>(ui: &'a Ui, catalog: Catalog, model: &'a Download) -> Element<'a, Message> { panel_with(ui, catalog, model, false) } diff --git a/crates/app-iced/src/pages/download/options/view.rs b/crates/app-iced/src/pages/download/options/view.rs index 76cb0d9..4051f58 100644 --- a/crates/app-iced/src/pages/download/options/view.rs +++ b/crates/app-iced/src/pages/download/options/view.rs @@ -79,7 +79,8 @@ pub(super) fn version_menu_height(items: usize) -> f32 { /// 为什么菜单也要钉(D30 四审):裁切位置由**钉死区高度**决定,与窗宽无关(1180 与 720 都切在 /// 同一个 y)。之前只钉实例名,菜单就正好落在切线上——760 下菜单容器 642–706 只有 18px 可见、 /// 条目文字一格都没画出来。把菜单一起钉住之后,它不再依赖首屏剩余高度分配,可达性由结构保证; -/// 滚动区溢出时被滚走的是错误行(说明与菜单都在钉死区,不参与滚动)。 +/// 滚动区里只有 head 与 chips 两块,用户可见内容**不会被滚走**(错误行在 Shared 档恒为 +/// `None`:静态不兼容时不画版本菜单、走的是上面 `!scroll` 那条路)。 /// D30 八审实测:滚动区可见高 ≈96–104px,内容(head 40 + chips 32 + 间距 4)≈76px ⇒ /// 1180×760 下 head(墨迹 462–501)与六枚 chips(506–537,32px 四角闭合)完整在首屏。 pub(crate) fn section<'a>( @@ -165,7 +166,8 @@ pub(crate) fn section<'a>( // 差 2px 就把 chip 的底边框裁掉;再塞说明(20px)就差 27~29px,说明整块 0 像素。 // 并排标签(方案 C)在这里不可行:六枚 chip 实测已占 404px,正文列只有 424px, // 加上「安装选项」必然横向溢出、把第六枚裁掉——那是拿一个已完成项换另一个。 - // 所以按塔授权的 B 落地:标签与说明都搬到钉死区(见下面的 `pinned`),滚动区只装控件。 + // 所以按塔授权的 B 落地:**说明**搬到钉死区(见下面的 `pinned`);「安装选项」标签在 + // Shared 档**删掉**(不是搬——八审裁决,见下三行),Pinned 档保留。滚动区只装控件。 // Shared 档**没有**「安装选项」标签:这是设计决定(D30 八审裁决)——六枚 chip 自解释, // 且正文列只有 424px、六枚 chip 已占 404px,加标签必然横向裁掉最后一枚。 // 原版等 Pinned 档仍保留该标签(见上面 `!scroll` 那条路)。