diff --git a/crates/app-iced/src/pages/download/options/view.rs b/crates/app-iced/src/pages/download/options/view.rs index 260aff4..4b3fd6f 100644 --- a/crates/app-iced/src/pages/download/options/view.rs +++ b/crates/app-iced/src/pages/download/options/view.rs @@ -108,16 +108,6 @@ pub(crate) fn section<'a>( // 中性说明(M222):只解释这一页能装到哪一层,不套错误色、不影响确认键。 // 换行由 iced 的文本布局负责,长句不会横向溢出;但**视觉验收仍需截图确认**(D30)。 - if let Some(note) = &options.note { - body = body.push(frame::text_role( - ui, - TypeRole::BodySmall, - false, - note.as_str(), - ui.color(Role::OnSurfaceVariant), - )); - } - // 「加载器版本」这一段只在**真该有列表**时出现:原版没有、静态不兼容没有(原因在下面那行)、 // 取不到也没有(同样在原因行)。留一个空标题只会让人以为界面缺了一块。 if show_versions(options) { @@ -131,6 +121,19 @@ pub(crate) fn section<'a>( body = body.push(version_list(ui, catalog, options)); } + // 中性说明排在**版本菜单之后**(D30 三审 S7-clip):说明两行高,排在菜单前面会把 + // 「加载器版本」这个本页唯一的加载器专属控件顶出首屏,而面板上半块是滚动区,切点会落在 + // 字形上。挪到菜单后面之后 1180×760 首屏能装下 head + chips + 标签 + 菜单,切点不再切字。 + if let Some(note) = &options.note { + body = body.push(frame::text_role( + ui, + TypeRole::BodySmall, + false, + note.as_str(), + ui.color(Role::OnSurfaceVariant), + )); + } + if let Some(problem) = &options.problem { body = body.push(frame::text_role( ui, diff --git a/crates/app-iced/src/pages/download/rows/tail.rs b/crates/app-iced/src/pages/download/rows/tail.rs index 37cc802..8bff2f2 100644 --- a/crates/app-iced/src/pages/download/rows/tail.rs +++ b/crates/app-iced/src/pages/download/rows/tail.rs @@ -58,18 +58,20 @@ impl TailShare { } } -/// 版本行的**实测节距**(D30:`04` 图列表 278px / 6 行 = 46.33px)。 +/// 版本行的**实测节距**(D30 三审:`04` 图行内下载图标的行首 265/309/353/397/441/485, +/// 节距恰 **44.0**;首行选中高亮矩形 253–296 也是 44px)。 /// /// 列表是 `Fill + scrollable` 时,视口高度不是节距整数倍就会切在某一行中间——D30 r2 实测 /// `01` 是 245px(5.3 行),英文态露出 6px 竖干、中文态露出「预览版」上半截。三栏档的 /// 「列表与面板对半分」那一档现在按整行取高([`whole_rows`]),底缘落在行边界上。 -pub(crate) const ROW_PITCH: f32 = 278.0 / 6.0; +pub(crate) const ROW_PITCH: f32 = 44.0; -/// 列表列内部、列表以外要扣掉的固定占位(搜索条 + 分隔线 + 表头 + 列间距)。 +/// 列表以外、列内要扣掉的固定占位(**列顶 156 → 列表顶 253**,D30 三审实测 = 97)。 /// -/// D30 标定:1180×760 的正文列高([`frame::body_height`](crate::pages::frame::body_height)) -/// 扣掉它再对半分,正好是 5 整行。**改搜索条 / 表头高度时要同步这个数。** -pub(crate) const LIST_CHROME: f32 = 93.0; +/// 1180×760:正文列 580 ⇒ floor((580−97)/2 / 44) × 44 = **220px = 5 整行**,分隔线落在 481。 +/// 1180×900:floor((720−97)/2 / 44) × 44 = **308px = 7 整行**(三审在 900 高实测过:旧标定 +/// 会在 y529–530 复发残影,新标定不复发)。**改搜索条 / 表头高度时要同步这个数。** +pub(crate) const LIST_CHROME: f32 = 97.0; /// 正文列高度 → 列表视口的**整行高度**(只给三栏档的 Shared 分支用)。 #[must_use]