From c70fec7f56c525e43d83be9887c0c53a5e1410cb Mon Sep 17 00:00:00 2001 From: Window Maker Date: Sun, 24 May 2026 15:38:04 +0200 Subject: [PATCH] WINGs/wview_wl: recursively redisplay children in wl_redisplay wl_redisplay fills the view's background then paints widget content via expose, but never re-composited child views. Children painted earlier were erased by the parent's background fill. Now recursively calls wl_redisplay on all mapped+realized children after the parent's expose handler, so the full widget tree composites bottom-up. --- WINGs/wview_wl.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/WINGs/wview_wl.c b/WINGs/wview_wl.c index 218ec5e..0ab87b0 100644 --- a/WINGs/wview_wl.c +++ b/WINGs/wview_wl.c @@ -437,6 +437,15 @@ static void wl_redisplay(void *vctx, W_View *view) WMHandleEvent(&ev); + /* Re-composite all mapped children into this view's backing */ + W_View *child = view->childrenList; + while (child) { + if (child->flags.mapped && child->flags.realized) { + wl_redisplay(vctx, child); + } + child = child->nextSister; + } + /* Composite this view's backing into its parent's backing */ if (view->parent) { pixman_image_t *src = (pixman_image_t *)W_GetViewBacking(view->window);