fix(app-iced): 版本列表在三栏对半分档按整行取高(S1b/S9)
列表视口高度不再是「Fill 剩下的」:正文列高度由仓里已有的 `frame::body_height` 算出, 经 `view_sized` → `body` → `rails::three_column` → `rows::content` 传下来,Shared 档据此 `floor(((h − LIST_CHROME)/2) / ROW_PITCH) * ROW_PITCH` 取整行。 实测(1180×760):列表 245px → **239px**(分隔线 498 → 492,腾出的 6px 归面板), `04` 对照**未变**(531 / 278px),720 窄窗**未变**(本来就是 4.0 整行、底缘 0 墨迹)。 两处修正写在提交里: 1. 第一版给所有三栏场合取整,把 `04` 也缩到 239px ⇒ 收窄为只在 `TailShare::Shared` 取整; 2. `rows.rs` 涨到 419 行撞 400 行门禁 ⇒ `TailShare` 与三个标定量纯搬移到 `rows/tail.rs`, `rows.rs` 回到 355 行(门禁 `components::gate` 与全仓扫描都绿)。 `view` 保留 4 参数(`#[cfg(test)]`,只有单测用),产品路径走 `view_sized`。
This commit is contained in:
1 parent
f29ca609ec
commit
954281d71a
5 files changed
+131
-55
No files matched your search
@@ -161,11 +161,25 @@ use super::{Action, Message};
|
||||
///
|
||||
/// `lang` 是 i18n 的入参,调用点传的是 `pages::Model.lang`(M106 起 = `App` 的生效语言,
|
||||
/// 见 `ui::lang::LangState`);页面自己不读全局、不猜语言。
|
||||
/// 四参数的 [`view_sized`]:给**用不到窗口高度**的调用方(只有单测;产品路径走
|
||||
/// `pages::view` → [`view_sized`],所以这条在非 test 构建里是死代码,`#[cfg(test)]` 收口)。
|
||||
#[cfg(test)]
|
||||
pub fn view<'a>(
|
||||
ui: &'a Ui,
|
||||
metrics: FrameMetrics,
|
||||
model: &'a Download,
|
||||
lang: Lang,
|
||||
) -> Element<'a, Message> {
|
||||
view_sized(ui, metrics, model, lang, 760.0)
|
||||
}
|
||||
|
||||
/// 同 [`view`],但显式给**窗口高度**(版本列表要按整行取高,见 [`rows::whole_rows`])。
|
||||
pub fn view_sized<'a>(
|
||||
ui: &'a Ui,
|
||||
metrics: FrameMetrics,
|
||||
model: &'a Download,
|
||||
lang: Lang,
|
||||
window_height: f32,
|
||||
) -> Element<'a, Message> {
|
||||
let catalog = lang.catalog();
|
||||
|
||||
@@ -182,7 +196,15 @@ pub fn view<'a>(
|
||||
),
|
||||
));
|
||||
|
||||
frame::page(ui, metrics, header, body(ui, metrics, catalog, model))
|
||||
// 正文列高度 = 窗口 − 标题栏 − 页头 − 上下页边距(唯一来源 [`frame::body_height`])。
|
||||
// 版本列表要按**整行**取高,就得知道这一块有多高(D30 r2 S1b/S9)。
|
||||
let body_height = frame::body_height(ui, metrics, window_height, true);
|
||||
frame::page(
|
||||
ui,
|
||||
metrics,
|
||||
header,
|
||||
body(ui, metrics, catalog, model, body_height),
|
||||
)
|
||||
}
|
||||
|
||||
/// 正文:加载态仍是居中占位;其余状态都长在三栏骨架上。
|
||||
@@ -191,6 +213,7 @@ fn body<'a>(
|
||||
metrics: FrameMetrics,
|
||||
catalog: Catalog,
|
||||
model: &'a Download,
|
||||
body_height: f32,
|
||||
) -> Element<'a, Message> {
|
||||
if model.is_loading() {
|
||||
// 还没拉到版本列表:三栏没有内容可填,给占位(安装面板照旧带着,见 M94 复审 p3)
|
||||
@@ -221,7 +244,7 @@ fn body<'a>(
|
||||
};
|
||||
|
||||
let content: Element<'a, Message> = if rails.tier.is_three_column() {
|
||||
rails::three_column(ui, catalog, model, rails)
|
||||
rails::three_column(ui, catalog, model, rails, body_height)
|
||||
} else {
|
||||
// 三栏不成立(可用宽 < 600):类型与主版本原样退回顶部 chips,列表吃掉整条可用宽。
|
||||
// 高度分法跟着档位走:chips 档多花两行 chip,面板必须收回自己的一半(M125 缺陷 1)。
|
||||
@@ -233,6 +256,8 @@ fn body<'a>(
|
||||
catalog,
|
||||
model,
|
||||
rows::TailShare::of(rails.tier, &install::panel_state(model)),
|
||||
// chips 档不按整行取高:实测那里已经是 4.0 整行、零残影,别动。
|
||||
None,
|
||||
),
|
||||
]
|
||||
.spacing(ui.space(Space::X2))
|
||||
|
||||
Reference in new issue
Block a user