feat(sdk): 通用长按事件 (agent-191, 用户定案) — MEOW_EV_LONG_PRESS 坐标式事件+meow_ui_set_long_press_cb/ms(opt-in,默认500ms,移动>12px取消,长按后抬手抑制TAP/SWIPE); 按钮按住视觉阈值同源; files 长按从App层迁入 SDK
meow_ui.a 4335c33a→6de89c27; hello→72fb20da; files→b1c4f58f 宿主 widgets(含6条长按断言)/p1p2p3/ime_fix/test_fsx 全 PASS; 未改 meow_ui_events 结构(防 -Wmissing-field-initializers 破坏既有App)
This commit is contained in:
1 parent
60072a08f1
commit
e95552b949
14 files changed
+200
-35
No files matched your search
@@ -1,7 +1,8 @@
|
||||
/* app.c — files 应用装配层:main + 组装 + 事件分发。
|
||||
*
|
||||
* 职责(对齐 hello_app/app.c):main 只做初始化/建页/跑事件循环/清理;把 meow_ui_run 的平铺输入
|
||||
* 回调(key/tap/swipe/tick/touch)路由到当前活动页(browser/viewer)。页面切换统一走
|
||||
* 回调(key/tap/swipe/tick/touch)路由到当前活动页(browser/viewer);通用长按走独立注册
|
||||
* (meow_ui_set_long_press_cb,§6.3)路由到 browser。页面切换统一走
|
||||
* meow_view_page_push/pop(活动栈 + on_enter/on_leave 唯一驱动)。
|
||||
*
|
||||
* 铁律(APPS.md §3.4.1 / WORK_STATE.md):物理键禁映射——不处理任何 key 语义;返回=左缘左滑
|
||||
@@ -66,12 +67,16 @@ static void app_on_touch_move(int x, int y)
|
||||
else if (browser_is_active()) browser_touch_move(x, y);
|
||||
}
|
||||
|
||||
/* on_tick:长按检测(browser 页)。 */
|
||||
static void app_on_tick(void)
|
||||
/* 通用长按(§6.3):SDK 判定「按下 ≥ 阈值未抬手且位移 ≤ 容忍」后带坐标回调;
|
||||
* browser 据此行命中打开 BottomSheet。viewer 无长按语义。 */
|
||||
static void app_on_long_press(int x, int y)
|
||||
{
|
||||
if (browser_is_active()) browser_tick(meow_ui_time_ms());
|
||||
if (browser_is_active()) browser_on_long_press(x, y);
|
||||
}
|
||||
|
||||
/* on_tick:本 App 无帧动画/时钟(长按计时已下沉 SDK §6.3),保留为空槽。 */
|
||||
static void app_on_tick(void) { }
|
||||
|
||||
/* ============================================================ */
|
||||
/* main */
|
||||
/* ============================================================ */
|
||||
@@ -95,6 +100,8 @@ int main(void)
|
||||
app_on_key, app_on_tap, app_on_swipe, app_on_tick, app_on_swipe_progress,
|
||||
app_on_touch_down, app_on_touch_move,
|
||||
};
|
||||
/* 通用长按走独立注册(§6.3):不进 meow_ui_events(避免位置初始化在 -Wextra 下告警)。 */
|
||||
meow_ui_set_long_press_cb(app_on_long_press);
|
||||
meow_ui_run(&ev);
|
||||
|
||||
/* 清理:meow_view_free 触发各页 on_destroy(控件 + 文本缓冲) */
|
||||
|
||||
Reference in new issue
Block a user