--- rxvt-unicode/src/rxvtfont.C 2006/02/18 15:24:39 1.96 +++ rxvt-unicode/src/rxvtfont.C 2006/03/17 18:29:29 1.102 @@ -1,4 +1,4 @@ -/*--------------------------------*-C-*---------------------------------* +/*----------------------------------------------------------------------* * File: rxvtfont.C *----------------------------------------------------------------------* * Copyright (c) 2003-2006 Marc Lehmann @@ -1276,9 +1276,14 @@ int w = term->fwidth * len; int h = term->fheight; - bool buffered = !term->am_transparent // we aren't transparent + bool buffered = bg >= 0 // we don't use a transparent bg +#ifndef FORCE_UNBUFFERED_XFT +# if defined(XPM_BACKGROUND) || defined(TRANSPARENT) + || !term->am_transparent // we aren't transparent || term->am_pixmap_trans // we have a pixmap - || bg >= 0; // we don't use a transparent bg +# endif +#endif + ; // cut trailing spaces while (len && text [len - 1] == ' ') @@ -1319,8 +1324,15 @@ { rxvt_drawable &d2 = d.screen->scratch_drawable (w, h); - if (bg < 0 && term->am_pixmap_trans) - XCopyArea (disp, term->pixmap, d2, gc, x, y, w, h, 0, 0); + if (0) + ; +#ifdef TRANSPARENT + else if (bg < 0 && term->am_pixmap_trans) + XCopyArea (disp, term->pixmap, d2, gc, + x + term->window_vt_x, y + term->window_vt_y, + w, h, 0, 0); +#endif +#ifdef XPM_BACKGROUND else if (bg < 0 && term->bgPixmap.pixmap) { XGCValues gcv; @@ -1338,6 +1350,7 @@ XFreeGC (disp, gc2); } +#endif else XftDrawRect (d2, &term->pix_colors[bg].c, 0, 0, w, h);