fix(app-iced): 必修2 元信息卡最小宽改由内容推(136 → 160),1180 下网格 2 列
视觉 r2 抓到的回归:上一轮为塞进三列把 `META_CARD_MIN_WIDTH` 收到 136,只算外框、忘了 `card_padding = 20`,卡内只剩 96px —— demo 里 `NeoForge 20.4.237`(实测 118px)与 `NeoForge 21.1.72`(110px)都会按词折成两行,同排另两张卡仍一行 → **卡底不齐**。 - 最小宽改由**卡内最长内容**反推:118(Segoe UI 14px 实测)+ 2×20(令牌 `card_padding`)= 158 → 取 4px 栅格 **160**(值上等于最初的 160,但这次是内容推出来的,不是凑上限凑出来的)。 - 于是元信息网格在 1180 宽落到 **2 列**(2×160 + 12 = 332;3 列要 504 > 行宽上限), 卡内可排 **166px** ≥ 118,所有值单行放下;6 格 = 3 行 2 列。 - 新增单测 `meta_card_is_wide_enough_for_the_longest_value`(此前 39 条 pages 测试没有一条覆盖它): ① 夹具 `NeoForge 20.4.237` 必须仍在 DEMO 里(数据变了就红,提醒重新量); ② `META_CARD_MIN_WIDTH − 2×card_padding ≥ 118`;③ 实际两列布局下每卡内宽也 ≥ 118。 - `meta_grid_drops_columns_as_the_detail_narrows` 跟着改成「上限处 2 列」(1180 与 900 同为 2 列, 差别落在详情列宽 435 vs 404)。
This commit is contained in:
1 parent
dc67be529d
commit
a650f8184b
3 files changed
+53
-13
No files matched your search
@@ -288,18 +288,15 @@ fn settings_pane_keeps_the_drawer_width_and_a_readable_form_column() {
|
||||
|
||||
#[test]
|
||||
fn meta_grid_drops_columns_as_the_detail_narrows() {
|
||||
assert_eq!(
|
||||
meta_columns(measure_cap_px()),
|
||||
3,
|
||||
"432 = 3×136 + 2×12 ≤ 435"
|
||||
);
|
||||
// 160 宽卡:3 列要 3×160 + 2×12 = 504(超出行宽上限),所以上限处就是 2 列;2 列要 332
|
||||
assert_eq!(meta_columns(measure_cap_px()), 2, "2×160 + 12 = 332");
|
||||
assert_eq!(meta_columns(340.0), 2);
|
||||
assert_eq!(meta_columns(280.0), 1);
|
||||
assert_eq!(meta_columns(330.0), 1);
|
||||
|
||||
// 与三张对照图的详情列宽对应:1180 → 3 列,900 → 2 列
|
||||
// 1180 与 900 都是 2 列(160 宽卡三列塞不进行宽上限),差别落在详情列宽
|
||||
let wide = frame_metrics(PaneKit::ListDetail, 1180.0);
|
||||
let mid = frame_metrics(PaneKit::ListDetail, 900.0);
|
||||
assert_eq!(wide.meta_columns, 3);
|
||||
assert_eq!(wide.meta_columns, 2);
|
||||
assert_eq!(mid.meta_columns, 2);
|
||||
assert!(mid.column < wide.column, "900 宽下详情列必须真的变窄");
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user