fix(app-iced): M125 r2 —— chips 档「还没选版本」不再对半切;宽度表换成实测值
r1 复审 p2-1:`TailShare::of` 只判档位,于是 chips 档「刚进页面」(面板只有一行 提示)也被五五分——700×760 下列表 8 个版本只显示 4 个、下半块 ≈160px 空画布, 而修前(main)这一态是 7 整行。修法:判据加**面板形态**,`Hint` 在任何档位都钉死, `Chips` + `Options`/`Install` 才共享。实测回到 7 整行(与 main 同一水位)。 守门:新增 `options_shot/ready.rs`(`ULL_DL_READY_SHOT`,不设 `ULL_DL_DEMO` 出的 700×760 图):列表区至少读出 6 个版本号。它在 r1 的图上**红**(4 个,原生输出见 mission 报告),在修后图上绿(7 个)。三条旧守门照旧(chips / compact / wide), chips 与 compact 换修前图仍红。 r1 复审 p2-2:宽度表的实测值改正(同一张 736 图逐项量): `1.21` 26(余 6)、`1.20` 28(余 4)、`24w` **29**(余 3)、`All versions` 墨迹画到 x=247(裁切边 248,只差 1px)⇒ 桶标签余量是 **3~6px** 而不是 6;「短标签『全部』= 32 零余量」这条论证的对比强度随之写准(比桶标签的 3~6px 更薄)。 `rails/major.rs` 的表格、`options_shot/compact.rs` 的测试文档一并改成实测值; 「墨迹右边界」那条反例也从 216..244 改成实测 216..247。 r1 复审 p3-1:第二级「全部版本」的图标从网格(与第一级同字形同药丸、像素级同形) 换成文档/清单字形 `IconKind::Logs`,理由与「图标集里没有版本/历史字形」写进 `major_shape` 文档。 r1 复审 p3-2:chips 档最多三层滚动(列表 / 面板 / loader 菜单)作为**已知风险** 登记在 `install.rs` 文档里,并写明为什么「把实例名移出滚动区」本轮不做(要拆 `options::section`,动三个文件,而且改完仍无法验证滚轮冒泡——没有通道)。
This commit is contained in:
1 parent
9c623a6fd3
commit
0f26ed3753
9 files changed
+283
-58
No files matched your search
@@ -11,15 +11,17 @@ use unlucky_design::spacing::Space;
|
||||
|
||||
use unlucky_i18n::{Catalog, Key};
|
||||
|
||||
use unlucky_design::icons::IconKind;
|
||||
|
||||
use crate::app::components::navigation::list_item::{list_item, ListItem};
|
||||
use crate::pages::download::group;
|
||||
use crate::pages::download::model::{Category, Download};
|
||||
use crate::pages::download::model::Download;
|
||||
use crate::pages::frame;
|
||||
use crate::pages::layout::RAIL_ICON_WIDTH;
|
||||
use crate::pages::Message;
|
||||
use crate::theme::Ui;
|
||||
|
||||
use super::{category_icon, labeled, rail_title};
|
||||
use super::{labeled, rail_title};
|
||||
|
||||
/// 第二栏:主版本桶(第一项永远是「全部版本」;没有主版本概念的版本不单独占一项)。
|
||||
pub(in crate::pages::download) fn major_rail<'a>(
|
||||
@@ -77,19 +79,32 @@ pub(in crate::pages::download) enum MajorShape<'a> {
|
||||
/// `ListItem` 两侧内边距各 16(`pad_start` / `pad_end`),所以 64 宽的栏里文本格
|
||||
/// = 64 − 32 = **32**,再长就被 `clip(true)` 切掉。`BodyLarge` 16px 下:
|
||||
///
|
||||
/// | 标签 | 墨迹宽 | 32 里放得下? |
|
||||
/// | 标签 | 墨迹(736×760 实测) | 32 的文本格里放得下? |
|
||||
/// |---|---|---|
|
||||
/// | `1.21` | 26(736×760 那张实测) | ✓ 余量 6 |
|
||||
/// | `24w` | 26(同上) | ✓ 余量 6 |
|
||||
/// | `All versions` | ≈84(12 字符,按 0.4em 下限也有 77) | ✗ 只画得出「All v」(缺陷 2 的原图) |
|
||||
/// | `全部版本` | 4 × 16 = **64**(全角 1em,精确值) | ✗ 只画得出「全部」,而且正好顶到裁切边 |
|
||||
/// | `1.21` | 26px(x=217..242) | ✓ 余量 **6** |
|
||||
/// | `1.20` | 28px(x=217..244) | ✓ 余量 **4** |
|
||||
/// | `24w` | 29px(x=216..244) | ✓ 余量 **3**(最紧的一条) |
|
||||
/// | `All versions` | 墨迹画到 x=247,裁切边在 248 | ✗ 被切:实际只画出「All v」(缺陷 2 的原图) |
|
||||
/// | `全部版本` | 4 全角字 × 16 = **64**(精确值,不是估计) | ✗ 只画得出「全部」,且顶到裁切边 |
|
||||
///
|
||||
/// 短标签这条退路也不行:中文「全部」= 2 × 16 = **32**,与文本格**一样宽、零余量**,
|
||||
/// 「裁不裁」取决于字体渲染的小数位——一个查不出、也守不住的边界。所以图标条档的
|
||||
/// 「全部版本」**不画文字**:换成与本页第一级那个「全部」同一个网格图标
|
||||
/// ([`category_icon`] 的 `Category::All`),全称进 tooltip(宽度不设限,中英文都完整)。
|
||||
/// 桶标签的余量是 **3~6px**(视字形:`24w` 最紧 3,`1.21` 最松 6)。短标签「全部」= 2 × 16 = **32**,
|
||||
/// 与文本格**一样宽、零余量**——比桶标签那 3~6px 更薄,裁不裁取决于字体渲染的小数位,
|
||||
/// 是一个查不出也守不住的边界,所以「换短标签」这条退路不采用。于是图标条档的
|
||||
/// 「全部版本」**不画文字**:换成图标(字形见 [`major_shape`] 的下文),
|
||||
/// 全称进 tooltip(宽度不设限,中英文都完整)。
|
||||
///
|
||||
/// 桶标签本来就是 3~5 字符的短串,两档都照旧画原文。
|
||||
///
|
||||
/// ## 用哪个字形(r1 复审 P3-1)
|
||||
///
|
||||
/// 这里用 **`IconKind::Logs`(文档 + 正文行)**,不用第一级「全部类型」那个网格
|
||||
/// (`category_icon(Category::All)`):Compact 档两条 64 宽的栏在屏上相邻,若两级都用网格 +
|
||||
/// 同一个 40×40 `Tonal` 药丸,**第一级「全部」与第二级「全部版本」像素级同形**,
|
||||
/// 只能靠 hover 出 tooltip 才分得清是哪个轴。文档/清单字形读作「整份版本清单」,
|
||||
/// 与网格(「全部类型」)分得开。
|
||||
///
|
||||
/// 更贴切的「版本 / 历史 / 层叠」字形本仓没有(图标语汇只有 28 个描边字形,登记在
|
||||
/// `unlucky_design::icons`),新增字形要动 `crates/design`(超出本页范围),此处按既有字形借用。
|
||||
pub(in crate::pages::download) const fn major_shape(
|
||||
entry: MajorEntry<'_>,
|
||||
icon_only: bool,
|
||||
@@ -146,17 +161,13 @@ fn major_item<'a>(ui: &'a Ui, entry: MajorEntry<'a>, icon_only: bool) -> Element
|
||||
}
|
||||
// 图标条档的「全部版本」:图标(与本页第一级的「全部」同一个网格)+ 全称 tooltip。
|
||||
// 高度对齐 `ListItem` 的行高,两档的行节奏才一样。
|
||||
MajorShape::Icon(full) => container(labeled(
|
||||
ui,
|
||||
full,
|
||||
category_icon(Category::All),
|
||||
entry.selected,
|
||||
press,
|
||||
))
|
||||
.width(Length::Fill)
|
||||
.height(Length::Fixed(ui.metrics().row_height))
|
||||
.align_x(Alignment::Center)
|
||||
.align_y(Alignment::Center)
|
||||
.into(),
|
||||
MajorShape::Icon(full) => {
|
||||
container(labeled(ui, full, IconKind::Logs, entry.selected, press))
|
||||
.width(Length::Fill)
|
||||
.height(Length::Fixed(ui.metrics().row_height))
|
||||
.align_x(Alignment::Center)
|
||||
.align_y(Alignment::Center)
|
||||
.into()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user