fix(ui/wave): 回放页切通道/切段后不重绘——key_cb 接管键后补失效
回放页 v1.0 建的键处理返回 true(接管全部键),但从未调 ui_content_page_invalidate():框架只在 key_cb 返回 false 时才替页面 失效,于是「键送达、状态已切、屏上纹丝不动」。该病被枚举缺陷完全 遮住(整页恒空、没有可切的画面),随本波枚举修复首次上板才暴露: 真机按 ←/→/↑/↓ 帧字节完全不变(同帧哈希),布局与状态机无问题。 - 上/下切通道、左/右切段成功路径、空态再探路径,各补一次 ui_content_page_invalidate()(与 ui_page_clock / ui_page_password 等已接管键的页面同纪律); - 切段失败仍保持「按了没动」的诚实语义(不重绘、不把忙态清成空); - 修改记录 v1.1。 /keil-build 0 错误 0 警告(Code 247,288 B,+4 B),RAM 不变; 台账 / 同码凭证同批刷新。 Refs #38
This commit is contained in:
@@ -29,6 +29,10 @@
|
||||
* 创建日期:2026-10-29
|
||||
* 修改记录:
|
||||
* v1.0 2026-10-29 DTU 项目组 创建(故障录波道 UI 侧)
|
||||
* v1.1 2026-11-02 DTU 项目组 按键切通道/切段补 ui_content_page_invalidate:
|
||||
* 本页 key_cb 返回 true(接管键),框架不再替本页失效重绘,状态变了
|
||||
* 屏上却纹丝不动——该病在枚举修复前整页恒空、从未有键可切,故随
|
||||
* 2026-11-02 回放页修复首次上板才暴露(真机实证见 PR #67)。
|
||||
*/
|
||||
|
||||
/* 头文件包含区 */
|
||||
@@ -394,11 +398,16 @@ static bool pg_key(lv_key_t a_key) {
|
||||
s_state = (rc == UI_WAVE_BAD) ? WP_ST_BAD : WP_ST_IDLE;
|
||||
}
|
||||
}
|
||||
/* 状态已变必须显式失效:框架只在 key_cb 返回 false 时自己 invalidate,
|
||||
* 本页接管了键(true),不失效就永远画旧画面(2026-11-02 真机实证:
|
||||
* 键送达、状态已切、屏上纹丝不动——该病随枚举修复首次上板才暴露) */
|
||||
ui_content_page_invalidate();
|
||||
return true;
|
||||
case LV_KEY_LEFT:
|
||||
case LV_KEY_RIGHT:
|
||||
if (s_state == WP_ST_IDLE) {
|
||||
wp_ensure(); /* 空态下按左右 = 再探一次盘(新段可能已落) */
|
||||
ui_content_page_invalidate();
|
||||
return true;
|
||||
}
|
||||
rc = (a_key == LV_KEY_RIGHT) ? ui_data_wave_seg_next(s_idx, &next)
|
||||
@@ -407,6 +416,7 @@ static bool pg_key(lv_key_t a_key) {
|
||||
s_idx = next;
|
||||
s_state = WP_ST_IDLE; /* 先回空态再载,坏段不会留着旧画面 */
|
||||
wp_load_seg();
|
||||
ui_content_page_invalidate(); /* 理由同上:切段成功要重绘 */
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user