diff --git a/WINGs/wview_wl.c b/WINGs/wview_wl.c index e6d751d..0a50178 100644 --- a/WINGs/wview_wl.c +++ b/WINGs/wview_wl.c @@ -219,6 +219,23 @@ static void wl_redisplay(void *vctx, W_View *view) if (!view->flags.mapped) return; + /* Fill background color */ + pixman_image_t *backing = (pixman_image_t *)W_GetViewBacking(view->window); + if (backing && view->backColor) { + pixman_color_t bg; + bg.red = view->backColor->color.red; + bg.green = view->backColor->color.green; + bg.blue = view->backColor->color.blue; + bg.alpha = view->backColor->alpha ? view->backColor->alpha : 0xFFFF; + pixman_image_fill_rectangles(PIXMAN_OP_SRC, backing, &bg, + 1, &(pixman_rectangle16_t){0, 0, view->size.width, view->size.height}); + } else if (backing) { + /* Default: light grey background */ + pixman_color_t bg = {0xAAAA, 0xAAAA, 0xAAAA, 0xFFFF}; + pixman_image_fill_rectangles(PIXMAN_OP_SRC, backing, &bg, + 1, &(pixman_rectangle16_t){0, 0, view->size.width, view->size.height}); + } + memset(&ev, 0, sizeof(ev)); ev.type = WME_EXPOSE; ev.window = (WNativeWindow)view->window; diff --git a/src/window.c b/src/window.c index 4cc2f70..c837407 100644 --- a/src/window.c +++ b/src/window.c @@ -1426,6 +1426,9 @@ WWindow *wManageInternalWindow(WScreen *scr, WNativeWindow window, WNativeWindow wm_backend->stacking_lower(window); wm_backend->window_map_subwindows(wwin->frame->core->window); + /* Ensure frame is painted (title may be NULL, skipping ChangeTitle) */ + wm_backend->frame_paint(wwin->frame); + /* setup stacking descriptor */ if (wwin->transient_for != None && wwin->transient_for != scr->root_win) { WWindow *tmp;