fix(packui): M113 第一批修正 —— 一次只摊开一件事、有界滚动、阶段词不再打架
D30 出图实测暴露的四个问题,都在本批范围内修掉: 1. **动作按钮被顶出屏幕**:内容库页正列没有整页滚动(只有结果列表自己滚),入口 + 报告 + 导出三块同时摊开时,「确认写盘 / 关闭 / 以包为准重新导入」落在 900px 以下。 改成一态一块(导出面板 > 进度 > 结果 > 入口);拖拽是窗口级事件,收起入口不丢功能。 2. **阶段词打架**:复用面板自带的阶段词是安装语义(Building the version),与 「Step 2/5 · Unpacking overrides」并排时两种说法。现在面板阶段词留空、由步骤行说真话 —— 仍然只有一份进度条 / 计数 / 取消按钮,没有第二套进度 UI。 3. **列表过长**:缺文件 / 冲突 / 预检样例与已知损失都套上「超过 n 条才滚」的有界容器 (packui/view/parts.rs 的 bounded),少量条目时不浪费空间。 4. **英文单复数**:计数行改成「标签:值」(Files written: 2、cannot export: 1)。 PackPathPlaceholder / PackFormatModrinth 的中文与英文雷同,被 chinese_catalog_is_actually_chinese 抓到,一并改掉。 另:app/update.rs 加完拖拽分支后 408 行超线 → 两个钩子改成返回 Task、三个分支各一行, 现在 397 行。新增致命态出图夹具(ULL_CONTENT_PACK=failed),用来证明「容忍的缺文件」与 「致命回滚」在视觉上可区分。 门禁:cargo check ✓ / clippy -D warnings ✓ / cargo test -p unlucky-app-iced(467+6)✓ / cargo test -p unlucky-i18n(24)✓ / rustfmt --check ✓ / wc -l 全表 ≤400 ✓
This commit is contained in:
1 parent
fbeff94e55
commit
2129d8cee6
10 files changed
+161
-83
No files matched your search
@@ -80,22 +80,27 @@ pub(crate) fn section<'a>(
|
||||
catalog: Catalog,
|
||||
model: &'a Pack,
|
||||
) -> Element<'a, PageMessage> {
|
||||
let mut block = column![entry(ui, catalog, model)]
|
||||
.spacing(ui.space(Space::X3))
|
||||
.width(Length::Fill);
|
||||
let mut block = column![].spacing(ui.space(Space::X3)).width(Length::Fill);
|
||||
|
||||
if let Some(running) = &model.running {
|
||||
// **一次只摊开一件事**:入口(拖什么/装到哪)、进度、结果、导出预检各占一态。
|
||||
// 全都堆在一起时,内容库页正列没有整页滚动 ⇒ 动作按钮被顶出屏幕(出图实测:冲突态与
|
||||
// 导出预检态的「确认写盘 / 关闭」都落在 900px 以下)。收起的入口不会丢功能:拖拽是窗口级
|
||||
// 事件,任何时候把文件拖进来都算数。
|
||||
if model.export.open {
|
||||
block = block.push(export_block(ui, catalog, &model.export));
|
||||
} else if let Some(running) = &model.running {
|
||||
block = block.push(running_block(ui, catalog, running));
|
||||
}
|
||||
if let Some(probe) = &model.probe {
|
||||
block = block.push(probe_block(ui, catalog, probe));
|
||||
}
|
||||
if let Some(report) = &model.report {
|
||||
block = block.push(divider::full(ui));
|
||||
} else if let Some(report) = &model.report {
|
||||
block = block.push(report_block(ui, catalog, report));
|
||||
} else {
|
||||
block = block.push(entry(ui, catalog, model));
|
||||
if let Some(probe) = &model.probe {
|
||||
// 探测失败要和路径输入框在一起:用户下一步就是改路径
|
||||
block = block.push(probe_block(ui, catalog, probe));
|
||||
}
|
||||
block = block.push(divider::full(ui));
|
||||
block = block.push(export_block(ui, catalog, &model.export));
|
||||
}
|
||||
block = block.push(divider::full(ui));
|
||||
block = block.push(export_block(ui, catalog, &model.export));
|
||||
|
||||
container(block).width(Length::Fill).into()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user