feat(sdk): 绘制期通用clip + view递归/on_event接线 (agent-195) — ①栈式clip rect(g_clip_stack[16]), 所有写像素原语过clip, meow_widget_draw push/pop控件矩形(含W_CUSTOM, 根治越界脏区), IME/模态顶层全屏不受影响 ②view enter/leave递归children + meow_view_dispatch_event(z降序子>父命中即消费); hello App层显式驱动退役
meow_ui.a→da4d3a7d; hello→c655ba43; 宿主4套件全PASS(含clip越界断言+view递归断言) 出入: W_SLIDER拇指在max处被裁(既有几何瑕疵可见化,待修); on_draw祖先已进入即画
This commit is contained in:
1 parent
b2e7cc8c70
commit
32a6a8ed1e
14 files changed
+257
-44
No files matched your search
@@ -243,7 +243,15 @@ void meow_draw_view_unregister(struct meow_view *v)
|
||||
}
|
||||
int meow_draw_view_entered(const struct meow_view *v)
|
||||
{
|
||||
return v ? meow_view_get_state(v) & MEOW_VIEW_STATE_ENTERED : 0;
|
||||
/* 子>父:view 或其任意祖先已进入即视为「可绘制」——配合 view_enter/leave 递归
|
||||
* (meow_ui_view.c §A.4),父 on_enter 重绘时子视图(尚未单独进入)也要经 on_draw 画出;
|
||||
* 且子随父进出("子视图随父进出"),祖先已进入 ⇒ 子树已进入,可绘制。 */
|
||||
const struct meow_view *cur = v;
|
||||
while (cur) {
|
||||
if (meow_view_get_state(cur) & MEOW_VIEW_STATE_ENTERED) return 1;
|
||||
cur = meow_view_parent(cur);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
void meow_draw_view_set_z(struct meow_view *v, int z)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user