Refactoring Xft clipping ref. #175
This commit is contained in:
parent
49ac4d1e14
commit
a12b73a36f
1 changed files with 19 additions and 16 deletions
39
x.c
39
x.c
|
|
@ -2281,20 +2281,9 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
|
||||||
else
|
else
|
||||||
#endif // BACKGROUND_IMAGE_PATCH
|
#endif // BACKGROUND_IMAGE_PATCH
|
||||||
|
|
||||||
#if !WIDE_GLYPHS_PATCH
|
|
||||||
XftDrawRect(xw.draw, bg, winx, winy, width, win.ch);
|
|
||||||
#endif // WIDE_GLYPHS_PATCH
|
|
||||||
|
|
||||||
/* Set the clip region because Xft is sometimes dirty. */
|
|
||||||
r.x = 0;
|
|
||||||
r.y = 0;
|
|
||||||
r.height = win.ch;
|
|
||||||
r.width = width;
|
|
||||||
XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1);
|
|
||||||
|
|
||||||
#if WIDE_GLYPHS_PATCH
|
|
||||||
/* Fill the background */
|
/* Fill the background */
|
||||||
XftDrawRect(xw.draw, bg, winx, winy, width, win.ch);
|
XftDrawRect(xw.draw, bg, winx, winy, width, win.ch);
|
||||||
|
#if WIDE_GLYPHS_PATCH
|
||||||
}
|
}
|
||||||
#endif // WIDE_GLYPHS_PATCH
|
#endif // WIDE_GLYPHS_PATCH
|
||||||
|
|
||||||
|
|
@ -2305,13 +2294,27 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
|
||||||
if (base.mode & ATTR_BOXDRAW) {
|
if (base.mode & ATTR_BOXDRAW) {
|
||||||
drawboxes(winx, winy, width / len, win.ch, fg, bg, specs, len);
|
drawboxes(winx, winy, width / len, win.ch, fg, bg, specs, len);
|
||||||
} else {
|
} else {
|
||||||
/* Render the glyphs. */
|
|
||||||
XftDrawGlyphFontSpec(xw.draw, fg, specs, len);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/* Render the glyphs. */
|
|
||||||
XftDrawGlyphFontSpec(xw.draw, fg, specs, len);
|
|
||||||
#endif // BOXDRAW_PATCH
|
#endif // BOXDRAW_PATCH
|
||||||
|
/* Set the clip region because Xft is sometimes dirty. */
|
||||||
|
#if WIDE_GLYPHS_PATCH
|
||||||
|
r.x = 0;
|
||||||
|
r.y = 0;
|
||||||
|
r.height = win.ch;
|
||||||
|
r.width = win.w;
|
||||||
|
XftDrawSetClipRectangles(xw.draw, 0, winy, &r, 1);
|
||||||
|
#else
|
||||||
|
r.x = 0;
|
||||||
|
r.y = 0;
|
||||||
|
r.height = win.ch;
|
||||||
|
r.width = width;
|
||||||
|
XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1);
|
||||||
|
#endif // WIDE_GLYPHS_PATCH
|
||||||
|
#if BOXDRAW_PATCH
|
||||||
|
}
|
||||||
|
#endif // BOXDRAW_PATCH
|
||||||
|
|
||||||
|
/* Render the glyphs. */
|
||||||
|
XftDrawGlyphFontSpec(xw.draw, fg, specs, len);
|
||||||
|
|
||||||
/* Render underline and strikethrough. */
|
/* Render underline and strikethrough. */
|
||||||
if (base.mode & ATTR_UNDERLINE) {
|
if (base.mode & ATTR_UNDERLINE) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue