fix(sdk+launcher): 图标不渲染真根因(agent-219) — meow_ui_img.c scale_buf cover 采样把乘写成除(÷缩放比→采到源图左上角透明区,全丢); 改乘+居中裁剪偏移修正; 宿主旧测试用纯色图掩盖了该bug。+ main_menu App退出/结构变化重绘时 fb_pan_buf0_force 无条件pan回buffer0(防App翻页留buffer1致菜单残帧)

meow_ui.a→3e0ee8f7 launcher→9d0efc2f hello→9609ea6e files→90f5cf07 ncm→be8be221(均已上卡); 真机截图证据 .tmp/meowbug/fix1.png+fix_b2_after.png
This commit is contained in:
MeowOS committed 2026-08-31 15:42:24 +08:00
1 parent 05a19a9ea3
commit ab4da09e75
45 files changed
+1926 -147

No files matched your search

+10 -3
View File
@@ -322,10 +322,12 @@ int browser_on_tap(int x, int y)
int row = meow_listview_hit(g_list, x, y); /* 行号(含滚动换算;禁用行 -1) */
if (row < 0) { browser_drag_reset(); return 1; } /* 命中列表但无有效行(空隙) */
int op = meow_listview_hit_op(g_list, x, y); /* 行右 1/3 = 操作区 */
if (op) browser_open_sheet(row);
else {
if (op) {
if (!picker_active()) browser_open_sheet(row); /* §6.2 二期:picker 模式不弹 sheet */
} else {
fsx_entry *e = &g_entries[row];
if (e->is_dir) browser_enter_dir(e->path);
else if (picker_active()) picker_return_file(e->path); /* picker:点文件=返回路径 */
else browser_open_file(e->path);
}
browser_drag_reset();
@@ -389,6 +391,7 @@ void browser_swipe(int dir, int dist)
* TAP(不再触发行体/打开动作),故这里无需再吞后续 tap;打开前清按下高亮与拖动态。 */
void browser_on_long_press(int x, int y)
{
if (picker_active()) return; /* §6.2 二期:picker 模式无长按 BottomSheet */
if (g_err != 0 || g_n == 0) return;
if (!meow_widget_hit(g_list, x, y)) return;
int row = meow_listview_hit(g_list, x, y);
@@ -410,7 +413,11 @@ static void browser_page_create(meow_view *v, void *ctx)
if (r_list.h < 0) r_list.h = 0;
strncpy(g_cur, FSX_SD_ROOT, sizeof g_cur - 1);
g_cur[sizeof g_cur - 1] = '\0';
g_tb = app_topbar_create("Files", 1, "NEW");
/* §6.2 二期:picker 模式 topbar 标题「Pick a file」且无 NEW 动作(点文件即选)。 */
if (picker_active())
g_tb = app_topbar_create("Pick a file", 1, NULL);
else
g_tb = app_topbar_create("Files", 1, "NEW");
/* 结构化列表:行数据源 browser_src2;单选模式(行高亮用 selected,§5.8.3) */
g_list = meow_listview_create(r_list.x, r_list.y, r_list.w, r_list.h, 0,
browser_src2, NULL, MEOW_LIST_SEL_SINGLE);