From 6cda6616093152c46f1d30ec60b3472712fe98eb Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Wed, 13 May 2026 21:27:22 +0200 Subject: [PATCH] Fix dialog content rendering: re-trigger child paint when top-level maps Children were painted during panel creation (before frame_buf backing was connected). Now wl_map triggers wl_map_subviews when a top-level view is mapped, re-painting all children into the correct backing image. --- WINGs/wview_wl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/WINGs/wview_wl.c b/WINGs/wview_wl.c index 4940cf1..e6d751d 100644 --- a/WINGs/wview_wl.c +++ b/WINGs/wview_wl.c @@ -133,6 +133,7 @@ static void wl_noop(void *vctx, W_View *view) } static void wl_redisplay(void *vctx, W_View *view); +static void wl_map_subviews(void *vctx, W_View *view); static void wl_map(void *vctx, W_View *view) { @@ -140,15 +141,17 @@ static void wl_map(void *vctx, W_View *view) /* Set mapped early so redisplay doesn't bail out */ view->flags.mapped = 1; /* Only trigger redisplay for top-level views (dialogs) */ - if (view->flags.topLevel && view->flags.realized) + if (view->flags.topLevel && view->flags.realized) { + wl_map_subviews(vctx, view); wl_redisplay(vctx, view); + } } static void wl_map_subviews(void *vctx, W_View *view) { W_View *child = view->childrenList; while (child) { - if (child->flags.realized && !child->flags.mapped) { + if (child->flags.realized) { child->flags.mapped = 1; wl_redisplay(vctx, child); }