fix(app-iced): 面板预算按内容推导 + 版本菜单不画 L2 阴影(M238)
两条都在「视口不终止内容」这一族里,修法各一半: ① 三栏档面板预算从死的 `PANEL_BUDGET = 300` 改成 `panel_budget(menu_items)` (内边距 24 + 首屏 76 + 间距 8 + 钉死区 88 + 菜单高 + 列表↔面板 21)。 旧常数不含列表↔面板那 21、也不随版本菜单行数变,于是 760/900 档面板实得 286/294px,滚动视口被挤到 54/62px——六枚 loader chip 只露出 10px(736 与 1180 同样严重,纵向预算与窗宽无关)。修后 760 档视口 98px(chips 31px 整枚在屏)、 900 档 106px;列表按整行让出:760 档 4→3 整行、900 档 7→6 整行;只有一条 加载器版本时菜单只占 64px,列表仍是 4 整行。 ② 版本菜单改用 `Menu::flat()`:不是「把阴影裁掉」,而是**不在滚动容器里画阴影**。 `iced_tiny_skia` 0.14 画 quad 阴影走 `draw_pixmap(.., mask: None)` (engine.rs:136-143),绕过裁切掩码;`iced_wgpu` 那边是整层 scissor (quad.rs:96-101)⇒ 同一棵树两个后端画出来不一样。修前菜单底下 54px 一条被压暗 (浅色 249→231,−7.2%,含 8px 缝与实例名框内上半部),修后逐像素等于画布色。 菜单的 L2 令牌不动,真实浮层照旧带阴影。 判据(两条,抓得住的/抓不住的都写进文档注释): - 结构:`rows/tail.rs` 断言三栏档 760/900 的滚动视口 ≥ 首屏 76px(对生产常量做算术); - 像素:`options_shot/compact.rs` 断言 chip 描边上下两行都在、且实例名框上方那条缝 与框内都是纯画布色。 变异自证:预算退回 300 ⇒ 结构断言红("滚动视口只有 54px < 首屏 76px");阴影无视 `flat()` ⇒ 像素断言红("y=660 x=304 是 [231,231,232] 而不是画布色")。 没验:滚动中/底部三态拍不出来(harness 无 `scroll_to` 派发通道,已另开 finding)。
This commit is contained in:
1 parent
dbc5274965
commit
df0944894f
11 files changed
+454
-69
No files matched your search
@@ -78,7 +78,10 @@ pub(super) fn three_column<'a>(
|
||||
body_height: f32,
|
||||
) -> Element<'a, Message> {
|
||||
// 分高方式与列表高度都从 `TailShare` 一处取(`Pinned` 档不给整行高度)。
|
||||
let share = rows::TailShare::of(rails.tier, &super::install::panel_state(model));
|
||||
// M238:面板预算按版本菜单的行数推,所以 `list_height` 也要拿到那个条数。
|
||||
let state = super::install::panel_state(model);
|
||||
let share = rows::TailShare::of(rails.tier, &state);
|
||||
let list_height = share.list_height(body_height, rows::menu_items(&state));
|
||||
row![
|
||||
panel(
|
||||
ui,
|
||||
@@ -90,15 +93,9 @@ pub(super) fn three_column<'a>(
|
||||
rails.major_rail,
|
||||
major_rail(ui, catalog, model, rails.major_rail)
|
||||
),
|
||||
container(rows::content(
|
||||
ui,
|
||||
catalog,
|
||||
model,
|
||||
share,
|
||||
share.list_height(body_height),
|
||||
))
|
||||
.width(Length::Fixed(rails.list))
|
||||
.height(Length::Fill),
|
||||
container(rows::content(ui, catalog, model, share, list_height))
|
||||
.width(Length::Fixed(rails.list))
|
||||
.height(Length::Fill),
|
||||
]
|
||||
.spacing(super::super::layout::rails::RAIL_GAP)
|
||||
.width(Length::Fill)
|
||||
|
||||
Reference in new issue
Block a user