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
@@ -338,6 +338,40 @@ pub fn accent_scheme(flavor: SchemeFlavor, accent: unlucky_design::color::Color)
|
||||
unlucky_design::DesignTokens::with_accent(flavor, accent).colors
|
||||
}
|
||||
|
||||
/// 这一屏的颜色从哪来(M250)。日志与出图都靠它说清「是谁生效」。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Colors {
|
||||
/// 用户显式填的强调色(`appearance.accent_color`)。
|
||||
Accent,
|
||||
/// D38 取色方案(背景图 / 壁纸取色成功,`State::derived_scheme`)。
|
||||
Scheme,
|
||||
/// 出厂品牌色板(`DesignTokens::brand`)。
|
||||
Board,
|
||||
}
|
||||
|
||||
/// 强调色 / 取色方案 / 出厂板 **三选一**:全仓**唯一**的优先级定义点(M250)。
|
||||
///
|
||||
/// 产品路径(`App::rebuild_ui`)与出图 harness(`pages::harness`)都调它。为什么必须有这一个
|
||||
/// 函数:两头各抄一份两选一/三选一,迟早出现「出图上有强调色、产品里没有」或者反过来,而那种
|
||||
/// 偏差在图上看不出来(图是对的,产品是错的)。
|
||||
///
|
||||
/// 优先级:**显式强调色 > D38 取色方案 > 出厂板**。手填的色是直接意图,取色是从图片派生的。
|
||||
/// `flavor`(明暗 / 跟随系统)不在这里解析,由调用方按现有主题逻辑给。
|
||||
pub fn tokens(
|
||||
flavor: SchemeFlavor,
|
||||
accent: Option<unlucky_design::color::Color>,
|
||||
scheme: Option<Scheme>,
|
||||
families: Families,
|
||||
) -> (Ui, Colors) {
|
||||
if let Some(accent) = accent {
|
||||
(Ui::with_accent(flavor, accent, families), Colors::Accent)
|
||||
} else if let Some(scheme) = scheme {
|
||||
(Ui::from_scheme(scheme, families), Colors::Scheme)
|
||||
} else {
|
||||
(Ui::new(flavor, families), Colors::Board)
|
||||
}
|
||||
}
|
||||
|
||||
/// 令牌字重 → iced 字重。
|
||||
pub fn weight_of(weight: Weight) -> iced::font::Weight {
|
||||
match weight {
|
||||
|
||||
Reference in new issue
Block a user