fix(app-iced,i18n): 实例名钉成面板页脚(S7)+ 中文占位符还原(S8)+ 注释实测值(S6)

D30 r2 视觉二审四条:

1. **S7(新回归)**:S1 的对半分让面板变矮之后实例名被挤出 1180×760 首屏。按 `install.rs`
   早已登记的方案改成**可滚上半块 + 钉死页脚**:`install::panel_with(.., shared)` →
   `options::section(.., scroll)`;`rows::content` 对 `PanelState::Options` 不再整块套
   scrollable(那层既把实例名卷进滚动区,也在窄窗产生第二条并列滚动条)。页脚不参与滚动,
   可达性由结构保证,S2 随之关闭。
2. **S8**:`catalog/download.rs` 与金表同一行的中文命令占位符 `<Forge 版本 id>` 照抄不可执行,
   还原成 `<forge id>`(两处一起改,金表顺序未动)。
3. **S6**:`rows.rs` 里「两半各 ≈215px / 列表 4.6 行」的估算换成实测(列表 245px = 5.29 行、
   面板 237px、分隔线 y=498),并写明 S1b 仍欠一项与其正确落点。

**S1b/S9(列表底缘整行)本轮没修成**:试过 `responsive` 拿「分给列表的高度」再 floor,
实测无效(`Fill` 子项上拿到非确定高度,量测显示列表区最后墨迹行仍在分隔线前一行),已回退,
不留无效代码。正确落点是把列表可用高度从 `pages/download.rs` / `rails.rs`(都在 scope 外)
传进 `rows::content`。

测试:`-p unlucky-app-iced` 862 passed、`-p unlucky-i18n` 36 passed(金表改动后仍绿)。
This commit is contained in:
AskaEth committed 2026-11-10 19:34:13 +08:00
1 parent cd7813f8eb
commit f29ca609ec
5 files changed
+83 -30

No files matched your search

+26 -13
View File
@@ -74,7 +74,7 @@ use super::super::frame;
use super::super::layout::rails::{LIST_DATE_WIDTH, LIST_KIND_WIDTH, ROW_GAP, ROW_ICON_BUTTON};
use super::super::layout::VersionRailTier;
use super::super::Message;
use super::install::{self, PanelState};
use super::install::{self, panel_state, PanelState};
use super::model::{Download, VersionRow};
use super::states;
@@ -102,19 +102,28 @@ pub(super) fn content<'a>(
// 列表与尾部面板之间**总是**有一条分隔线(三态一致):M123 的取证图里「选好了版本」
// 那一态原先没有它,版本行与选项区第一行(版本号 + 安装按钮)读起来像同一块内容。
let tail: Element<'a, Message> = column![divider::full(ui), install::panel(ui, catalog, model)]
.spacing(ui.space(Space::X3))
.width(Length::Fill)
.into();
let shared = matches!(share, TailShare::Shared);
let tail: Element<'a, Message> = column![
divider::full(ui),
install::panel_with(ui, catalog, model, shared)
]
.spacing(ui.space(Space::X3))
.width(Length::Fill)
.into();
// chips 档:面板收回自己的一半、内部可滚(它原先按内容高钉死,把列表压成 18px 的缝)。
let tail: Element<'a, Message> = match share {
TailShare::Pinned => tail,
TailShare::Shared => scrollable(tail)
// chips 档 / 带版本列表的选项区:面板收回自己的一半。
//
// `PanelState::Options` 走**面板内部**的滚动(上半块可滚 + 实例名钉页脚,见 `install::panel`),
// 所以这里不再整块套一层 scrollable——那一层曾让窄窗出现两条并列滚动条,也因为把实例名
// 卷进滚动区而让它掉到首屏外(D30 r2 S7)。其它面板(安装中/失败)内容短,保留外层滚动。
let tail: Element<'a, Message> = match (share, panel_state(model)) {
(TailShare::Shared, PanelState::Options(_)) => tail,
(TailShare::Shared, _) => scrollable(tail)
.id(iced::widget::Id::new(PANEL_SCROLL_ID))
.height(Length::Fill)
.style(frame::scroll_style(ui))
.into(),
(TailShare::Pinned, _) => tail,
};
column![
@@ -171,10 +180,14 @@ impl TailShare {
(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` 分支已存在)。
// M222 D30 r1 S1 / r2 S7:**带加载器版本列表**的选项区在任何档位都太高。
// 三栏档(1180×760)实测:修前面板 204→372px,版本列表 6.0 行(278px)被压到
// 2.4 行(110px,底缘切在第三行图标上);改成 Shared 之后版本列表 **245px = 5.29 行**、
// 面板 237px(分隔线 y=498)。面板因此变矮,实例名会被挤出首屏 ⇒ 同一轮把它
// **钉成面板页脚**(`install::panel_with` 的 `shared` 分支 + `options::section`)。
// 仍欠一项:245px 不是行高整数倍,列表底缘仍切在第 6 行中间(S1b/S9)。
// 修它要把「分给列表的高度」从 `pages/download.rs` 传进来做 floor 取整
// (`responsive` 在 Fill 子项上拿不到确定高度,实测无效,已回退)。
(_, PanelState::Options(options)) if options.has_loader_versions() => Self::Shared,
_ => Self::Pinned,
}