Fix dialog titlebar and background rendering
- window.c: always call frame_paint for internal windows (title=NULL skipped wFrameWindowChangeTitle which was the only paint trigger) - wview_wl.c: fill view backing with background color before expose (X11 server fills background automatically, Wayland needs explicit fill)
This commit is contained in:
parent
4440476a35
commit
bf9a0a9cf5
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue