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.
This commit is contained in:
Window Maker 2026-05-24 15:38:04 +02:00
parent 9a9cc9e9df
commit c70fec7f56
1 changed files with 9 additions and 0 deletions

View File

@ -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);