fix(app-iced): 复审 r1 的四条 p2 + 三条小事(M250)
- p2-1 删死状态:`Accent::scheme` 字段 / `scheme()` 取值口 / `set_flavor` 重派生全仓零读者,
且注释谎称「Ui 的唯一入口」。色值 `color` 与深浅无关,`Ui` 由 `rebuild_ui` 重算,
所以整条删掉,`new/set/reset` 也不再收 `flavor`
- p2-2 规则只定义一次:新增 `theme::tokens(flavor, accent, scheme, families) -> (Ui, Colors)`,
`App::rebuild_ui` 与出图 harness 都调它(harness 传 scheme=None,如实说明不覆盖 D38 分支);
README 改成「同一条规则、不是同一个调用点」
- p2-3 逐键不闪红:`Accent` 区分「显示中的错」与 `pending`。只有**不可能再变合法**(非 hex / 超 6 位)
才立刻亮;位数不足先挂 pending,等 `commit()`(点到别的外观控件)或配置读回才亮
- p2-4 订正 `app/state.rs:151` 那句反话(强调色现在是 UI 写入字段)
- 小事:hint 文案改「中性表面与错误色不随强调色变」;`Digit{ch}` 里的不可见字符显示成 U+XXXX;
8 颗色块补 tooltip(hex 原文,Overlay 底)
判据:新用例 `accent_errors_only_appear_when_they_are_actionable` 覆盖「输入中不亮 / 提交后亮 /
配置读回立刻亮」三态;gallery 出图逐字节与重构前相同(规则搬迁没改像素)。
This commit is contained in:
1 parent
c609827c49
commit
14282f3325
10 files changed
+261
-78
No files matched your search
@@ -53,36 +53,37 @@ impl App {
|
||||
// 面板 α(D36)在这里注入 `Ui`:全仓所有表面色都从 `Ui::layer` 出去,所以这是**唯一**
|
||||
// 生效点(外壳 / 三页卡片 / 外观分组卡片 / 空态图标块自动同源,调用点没有机会各处自乘)。
|
||||
let panel_alpha = self.appearance.effective_panel_alpha();
|
||||
self.ui = match (
|
||||
// 三选一规则只在 `theme::tokens` 里写一遍:出图 harness 也调它(两头各抄一份迟早
|
||||
// 出现「图上有强调色、产品里没有」,而那种偏差在图上看不出来)。
|
||||
let (ui, colors) = crate::theme::tokens(
|
||||
self.appearance.flavor(),
|
||||
self.appearance.accent.color(),
|
||||
self.appearance.derived_scheme(),
|
||||
) {
|
||||
(Some(accent), _) => {
|
||||
self.appearance.derived_scheme().copied(),
|
||||
self.families,
|
||||
);
|
||||
match colors {
|
||||
crate::theme::Colors::Accent => {
|
||||
// M250:一行里同时给「强调色生效了」与「取色方案被谁压住」,两件事都能读出来。
|
||||
diag!(
|
||||
"[appearance] accent={} → Ui::with_accent(只换 primary/secondary/tertiary;\
|
||||
取色方案 palette={} 被显式强调色压住)",
|
||||
"[appearance] accent={} → Ui::with_accent(只换 primary/secondary/tertiary;取色方案 palette={} 被压住)",
|
||||
self.appearance.accent.log_token(),
|
||||
self.appearance.palette_level()
|
||||
);
|
||||
Ui::with_accent(self.appearance.flavor(), accent, self.families)
|
||||
}
|
||||
(None, Some(scheme)) => {
|
||||
crate::theme::Colors::Scheme => {
|
||||
diag!(
|
||||
"[appearance] palette={} → Ui::from_scheme(取色方案接管 49 个角色)",
|
||||
self.appearance.palette_level()
|
||||
);
|
||||
Ui::from_scheme(*scheme, self.families)
|
||||
}
|
||||
(None, None) => {
|
||||
crate::theme::Colors::Board => {
|
||||
// 非法值:**保持出厂板**,但错行留在设置页(不静默),日志里也留一条。
|
||||
if let Some(error) = self.appearance.accent.error() {
|
||||
diag!("[appearance] accent 非法({error:?})→ 出厂板,错行见设置页");
|
||||
}
|
||||
Ui::new(self.appearance.flavor(), self.families)
|
||||
}
|
||||
}
|
||||
.with_panel_alpha(panel_alpha);
|
||||
self.ui = ui.with_panel_alpha(panel_alpha);
|
||||
}
|
||||
|
||||
/// 按设置文件里的主题模式切一次外观;`--theme` 显式给了就不动。
|
||||
|
||||
Reference in new issue
Block a user