fix(app-iced): 禁用态与遮罩改从品牌板合成(M229 复审 F1)+ 选择类图注回填(F2)

F1(核心):三处 `Scheme::baseline(ui.flavor())` 自己重算了一份方案,绕开 `Ui` 里注入的品牌板,
于是 Ink 板上的禁用控件与对话框遮罩仍按 tone 派生的天蓝中性合成(复审量到滑块轨道 #58646C、
填充框 #222E36、遮罩 #060E13,全是蓝系)。修法:`Ui::scheme()` 公开已注入的那份,
`interaction/disabled.rs`(两族合成 + 内容色)、`feedback/dialog.rs`(scrim)、
`feedback/action.rs`(禁用动作文字)改为从它取。

修完 Ink 下实测:禁用容器(12%)#292F28、按钮容器(10%)#252B24、遮罩 #0A0E0A(绿系中性,
R = B);Silver 档遮罩 #A9A9AA。旧三个蓝系值在 7 张深色图里出现次数均为 0。

回归门:`disabled_colors_follow_the_brand_board_not_the_tone_baseline`(按板合成 + 与 baseline
不等 + 深色档 G ≥ B)、`scrim_is_scrimalpha_precomposited_onto_the_canvas` 增加「不许退回 baseline」。

F2:`selection/{matrix,mod,checkbox,radio,geometry}.rs` 里「20×20 / rx2 / 外圈 20」回填成实际渲染的
「18×18 / rx4 / 外圈 18」(勾形比例不变 ⇒ 10.8dp),并按塔裁决把搜索药丸容器从
`SurfaceContainerHigh` 抬到 **`SurfaceContainerHighest`**(贴规格卡,与 filled 字段同底);
`search.rs` / `probe/search.rs` / gallery `inputs` 图注同步。展开的搜索面板与菜单是浮层,
仍留 High 档(已在文档里写明不是漏改)。

`interaction/disabled.rs` 加测试后 405 行 ⇒ 单测纯搬移到 `interaction/disabled/tests.rs`。
This commit is contained in:
AskaEth committed 2026-11-11 01:49:14 +08:00
1 parent f9877a89d8
commit 4ce24d6fbd
18 files changed
+361 -213

No files matched your search

@@ -104,13 +104,26 @@ fn dialog_padding_and_action_gaps_are_the_tokens() {
fn scrim_is_scrimalpha_precomposited_onto_the_canvas() {
for flavor in [SchemeFlavor::Light, SchemeFlavor::Dark] {
let ui = ui(flavor);
let scheme = Scheme::baseline(flavor);
// 期望值按**品牌色板**(= `Ui` 注入的那一份):M229 复审 F1 之前这里用的是
// `Scheme::baseline`,Ink 板上会得到偏蓝的遮罩(数值见 `DevDocs/artifacts/m229/README.md` §6)。
let scheme = unlucky_design::color::BrandBoard::for_flavor(flavor).scheme();
let canvas = scheme.get(MaterialLayer::Canvas.surface_role());
let expected = to_iced(scheme.scrim().over(canvas));
assert_eq!(
scrim(&ui),
expected,
"{flavor:?}:scrim 必须逐位等于「黑@0.32 叠 canvas」"
"{flavor:?}:scrim 必须逐位等于「黑@0.32 叠 canvas(品牌板)」"
);
// F1 的回归门:不许回到 tone 派生的 baseline 上算。
let baseline = Scheme::baseline(flavor);
assert_ne!(
expected,
to_iced(
baseline
.scrim()
.over(baseline.get(MaterialLayer::Canvas.surface_role()))
),
"{flavor:?}:遮罩退回了 baseline(Ink 下会偏蓝)"
);
assert_eq!(
scrim(&ui).a,