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:
1 parent
cd7813f8eb
commit
f29ca609ec
5 files changed
+83
-30
No files matched your search
@@ -66,11 +66,17 @@ pub(super) fn version_menu_height(items: usize) -> f32 {
|
||||
rows * ITEM + Space::X2.dp() * 2.0
|
||||
}
|
||||
|
||||
/// 选项区(面板的下半块)。
|
||||
/// 选项区(面板的下半块):**可滚的上半块 + 钉死的页脚**。
|
||||
///
|
||||
/// `scroll` = 面板此刻是不是「自己可滚」的那一档(`rows::TailShare::Shared`)。是的话上半块
|
||||
/// 收进 `scrollable` 吃 `Fill`,**实例名那一格留在页脚、永远在屏**——这条是 D30 r2 S7 的修法:
|
||||
/// 面板变高(多了加载器版本列表)之后,原先实例名会被挤到首屏外(1180×760 实测要滚 1 屏),
|
||||
/// 钉成页脚之后可达性由**结构**保证,不依赖滚轮(`install.rs` 模块文档里登记的方案)。
|
||||
pub(crate) fn section<'a>(
|
||||
ui: &'a Ui,
|
||||
catalog: Catalog,
|
||||
options: &'a OptionsView,
|
||||
scroll: bool,
|
||||
) -> Element<'a, Message> {
|
||||
let head = row![
|
||||
container(frame::text_role(
|
||||
@@ -125,15 +131,6 @@ pub(crate) fn section<'a>(
|
||||
body = body.push(version_list(ui, catalog, options));
|
||||
}
|
||||
|
||||
body = body.push(text_field(
|
||||
ui,
|
||||
Field::new(options.instance_name.as_str())
|
||||
.variant(FieldVariant::Outlined)
|
||||
.label(catalog.text(Key::DownloadOptionsInstanceName))
|
||||
.placeholder(catalog.text(Key::DownloadOptionsInstanceNameHint)),
|
||||
Message::SetInstanceName,
|
||||
));
|
||||
|
||||
if let Some(problem) = &options.problem {
|
||||
body = body.push(frame::text_role(
|
||||
ui,
|
||||
@@ -144,7 +141,31 @@ pub(crate) fn section<'a>(
|
||||
));
|
||||
}
|
||||
|
||||
body.into()
|
||||
// 页脚:实例名(钉死,不参与滚动)。见 `section` 的文档。
|
||||
let footer = text_field(
|
||||
ui,
|
||||
Field::new(options.instance_name.as_str())
|
||||
.variant(FieldVariant::Outlined)
|
||||
.label(catalog.text(Key::DownloadOptionsInstanceName))
|
||||
.placeholder(catalog.text(Key::DownloadOptionsInstanceNameHint)),
|
||||
Message::SetInstanceName,
|
||||
);
|
||||
|
||||
if !scroll {
|
||||
// 钉死档(三栏 + 无版本列表 / chips 以外的矮面板):行为与以前一致,一列内容到底。
|
||||
body = body.push(Element::from(footer));
|
||||
return body.into();
|
||||
}
|
||||
column![
|
||||
scrollable(body)
|
||||
.height(Length::Fill)
|
||||
.style(frame::scroll_style(ui)),
|
||||
footer,
|
||||
]
|
||||
.spacing(ui.space(Space::X2))
|
||||
.height(Length::Fill)
|
||||
.width(Length::Fill)
|
||||
.into()
|
||||
}
|
||||
|
||||
/// 加载器版本这一段要不要画(见 `section` 的注释)。
|
||||
|
||||
Reference in new issue
Block a user