… | |
… | |
236 | if (color == Color_bg || color == Color_transparent) |
236 | if (color == Color_bg || color == Color_transparent) |
237 | XClearArea (disp, d, x, y, w, h, false); |
237 | XClearArea (disp, d, x, y, w, h, false); |
238 | else if (color >= 0) |
238 | else if (color >= 0) |
239 | { |
239 | { |
240 | #if XFT |
240 | #if XFT |
241 | bool done = false; |
241 | Picture dst; |
242 | |
242 | |
243 | # ifdef HAVE_BG_PIXMAP |
243 | # ifdef HAVE_BG_PIXMAP |
|
|
244 | if (term->bgPixmap.pixmap |
244 | if (term->bgPixmap.pixmap && color >= 0 && !term->pix_colors[color].is_opaque ()) |
245 | && color >= 0 && !term->pix_colors[color].is_opaque () |
245 | { |
|
|
246 | Picture dst = XftDrawPicture (d); |
246 | && ((Picture dst = XftDrawPicture (d)))) |
247 | |
|
|
248 | if (dst != 0) |
|
|
249 | { |
247 | { |
250 | XClearArea (disp, d, x, y, w, h, false); |
248 | XClearArea (disp, d, x, y, w, h, false); |
|
|
249 | |
251 | Picture solid_color_pict = XftDrawSrcPicture (d, &term->pix_colors[color].c); |
250 | Picture solid_color_pict = XftDrawSrcPicture (d, &term->pix_colors[color].c); |
252 | XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, x, y, w, h); |
251 | XRenderComposite (disp, PictOpOver, solid_color_pict, None, dst, 0, 0, 0, 0, x, y, w, h); |
253 | done = true; |
|
|
254 | } |
252 | } |
255 | } |
253 | else |
256 | # endif |
254 | # endif |
257 | if (!done) |
|
|
258 | XftDrawRect (d, &term->pix_colors[color].c, x, y, w, h); |
255 | XftDrawRect (d, &term->pix_colors[color].c, x, y, w, h); |
259 | |
256 | |
260 | #else |
257 | #else |
261 | XSetForeground (disp, gc, term->pix_colors[color]); |
258 | XSetForeground (disp, gc, term->pix_colors[color]); |
262 | XFillRectangle (disp, d, gc, x, y, w, h); |
259 | XFillRectangle (disp, d, gc, x, y, w, h); |