feat(sdk/view): 视图框架批次① — z序绘制物注册表(meow_ui_draw.c: 自动注册+auto_z(深度*步长+层内seq)+set_z(999)置顶+MEOW_Z_AUTO_MAX=127) + meow_view骨架(meow_ui_view.c/.h: 嵌套容器+六生命周期+page_push/pop/replace包装activity栈+sub_push/pop预留桩) + 收敛live_btn走invalidate + hello迁移(d_paint_region/d_redraw删除→meow_ui_invalidate, chrome set_z(999), demo文本注册CUSTOM z=128) (agent-176, 定案见SDK_VIEW_FRAMEWORK_DESIGN.md §E①)

meow_ui.a d814d0ed→7e20f10e; hello 0a1c96a5→2ce09466
宿主验证: test_p1p2p3_repro P1c/P2/P3 ALL PASS; test_meow_ui_widgets ALL PASS 无回归; mipsel -Wall -Wextra 0 warning
This commit is contained in:
MeowOS committed 2026-08-31 02:38:32 +08:00
1 parent fbc412e96a
commit 08c70aa14c
13 files changed
+872 -96

No files matched your search

+25
View File
@@ -184,6 +184,31 @@ void meow_widget_touch_refresh(void);
void meow_ui_global_render(void);
int meow_ui_global_hit(int x, int y);
/* ---- 绘制物注册表(meow_ui_draw.c,§6.2 绘制物注册表/z序/区域重画)----
* 内部协作接口:widget.c 在 create 末尾自动注册、meow_widget_free 自动注销;view.c 在
* meow_view_add_widget/meow_view_free 挂/摘 widget 与 view 的 z 深度源;live_btn 收敛查询
* 是否已注册(已注册→走 invalidate 区域重画,否则回退单控件 flush)。 */
struct meow_view; /* 仅前向声明;完整类型在 meow_ui_view.h */
void meow_draw_widget_register(struct meow_widget *w); /* create 末尾:自动注册(幂等) */
void meow_draw_widget_unregister(struct meow_widget *w); /* meow_widget_free:自动注销 */
int meow_draw_widget_registered(const struct meow_widget *w);/* 是否在注册表(live_btn 收敛用) */
void meow_draw_widget_set_view(struct meow_widget *w, struct meow_view *v); /* 挂 view:重算 auto z */
void meow_draw_view_register(struct meow_view *v); /* view create:注册绘制物(on_draw 用) */
void meow_draw_view_unregister(struct meow_view *v); /* view free:注销 */
int meow_draw_view_entered(const struct meow_view *v); /* view 是否已进入(绘制过滤参考) */
void meow_draw_view_set_z(struct meow_view *v, int z); /* view 显式 z(z<=0=清除回退自动) */
/* 控件布局深度反推(meow_ui_draw.c 用;widget.c 实现,读 struct meow_widget 内部字段)。
* 让绘制注册表在「无 meow_view 时」仍能从 W_LAYOUT children 反推子>父深度。 */
int meow_widget_is_layout(const struct meow_widget *w); /* 1 = W_LAYOUT */
int meow_widget_nchild(const struct meow_widget *w); /* 布局子项数 */
const struct meow_widget *meow_widget_child_at(const struct meow_widget *w, int idx);
/* 控件几何/归属访问器(meow_ui_draw.c 用:绘制物 rect 实时读 + owner 过滤)。 */
int meow_widget_owner(const struct meow_widget *w); /* 创建时绑定的 Activity */
void meow_widget_rect(const struct meow_widget *w, int out[4]); /* x,y,w,h */
/* ---- IME(meow_ui_ime.c)---- */
/* 当前是否显示软键盘。 */
int meow_ime_active(void);