feat(app-iced): --force-state 穿过设置页与外观区(M285 FORCEDWIRE)
pages::Model.forced 此前只到得了外壳 + 实例页(唯一消费者 pages/instances.rs:159), 设置页「外观」区的滑块/文本框/裸 iced::button 全都不消费它 ⇒ M284 那四处状态层 (语言档 / 主题档 / 日志 action_button / 外观 choice)只有单测证据,做不出像素判据。 改动: - settings/mod.rs: resolve_state(forced, status) 与 forced_button(button, forced) 成为全仓唯一两个「forced 怎么解释」的点;view → form → section_columns 一路 新增 forced 形参(默认 None ⇒ 今天的行为逐字节不变)。 - Group.body(registry.rs)加第 4 个形参 Option<Interaction>,六组统一签名。 - 四类裸 iced::button 控件把 forced 递进样式闭包并经 resolve_state 落地: 语言档 chip(general/language.rs)、主题档 chip(general/theme.rs)、 日志 action_button(logs_row.rs)、外观 choice(appearance/section/mod.rs, 含 accent/window/bg_image/colour_source 共 10 处调用)。 - components::buttons::Button 的三组(update / ai / java)走 forced_button 的 .state()。 - harness: request.rs 解析 --force-state=rest|hover|pressed(未知值报错,词与产品 cli.rs 同一套),slug 加 -hover/-pressed;app.rs 把它写进 model.forced, 截图通道默认 Rest 的纪律保持(显式值优先)。 - pages/mod.rs: 唯一调用点把 model.forced 传给 settings::view(397 → 399 行)。 单测:resolve_state 的 Some 覆盖 / None 退回;forced_button 的 Some 钉态 / None 原样。
This commit is contained in:
1 parent
767727efb7
commit
7b80b0e314
19 files changed
+397
-79
No files matched your search
@@ -146,12 +146,15 @@ pub fn run(request: Request) -> Result<(), String> {
|
||||
iced::application(
|
||||
move || {
|
||||
let mut model = demo_model(boot.screen, boot.width, boot.height);
|
||||
// 截图通道把**消费 forced 的那批控件**(实例页)钉成常态,与产品 `--screenshot`
|
||||
// 的 `ForcedState::Rest` 同一条纪律。它管不到设置页 / 外观区(那边不读 forced),
|
||||
// 那两屏的密闭靠窗口级 passthrough——别把这条当成万能的。
|
||||
if boot.screenshot.is_some() {
|
||||
model.forced = Some(Interaction::Enabled);
|
||||
}
|
||||
// 截图通道把消费 forced 的控件钉成常态,与产品 `--screenshot` 的 `ForcedState::Rest`
|
||||
// 同一条纪律;显式的 `--force-state=hover|pressed` **优先**(那是故意要画那个态)。
|
||||
//
|
||||
// M285:这条线现在真的到得了设置页 / 外观区——`pages::Model.forced` 经
|
||||
// `settings::view(.., forced)` → `Group.body` → 语言档 / 主题档 / 日志按钮 / 外观 choice,
|
||||
// 由 `settings::resolve_state` 落到样式闭包。此前那四处的状态层只有单测证据。
|
||||
model.forced = boot
|
||||
.force_state
|
||||
.or_else(|| boot.screenshot.is_some().then_some(Interaction::Enabled));
|
||||
// M250:gallery 出图也要能看见强调色。**规则不在这里抄** —— 调产品用的同一个
|
||||
// `theme::tokens`(优先级只定义一次)。如实补一句:harness 不建 `App`,所以这里
|
||||
// 没有 D38 取色方案(第三个实参恒 `None`),出图**不覆盖**那条分支。
|
||||
|
||||
Reference in new issue
Block a user