Redraw right-hand side border correctly.

Since we don't actually stop drawing a title (or marks) with the
distance of the border width on the right side, but instead with
a hard-coded two pixel distance, we can only redraw that much of
the border without potentiall cutting off text.

relates to #2247
This commit is contained in:
Ingo Bürk 2016-04-13 19:51:26 +02:00
parent c3db74a1f8
commit 057517b809
1 changed files with 7 additions and 2 deletions

View File

@ -327,14 +327,19 @@ static void x_draw_decoration_after_title(Con *con, struct deco_render_params *p
assert(con->parent != NULL); assert(con->parent != NULL);
Rect *dr = &(con->deco_rect); Rect *dr = &(con->deco_rect);
Rect br = con_border_style_rect(con);
/* Redraw the right border to cut off any text that went past it. /* Redraw the right border to cut off any text that went past it.
* This is necessary when the text was drawn using XCB since cutting text off * This is necessary when the text was drawn using XCB since cutting text off
* automatically does not work there. For pango rendering, this isn't necessary. */ * automatically does not work there. For pango rendering, this isn't necessary. */
if (!font_is_pango()) { if (!font_is_pango()) {
/* We actually only redraw the far right two pixels as that is the
* distance we keep from the edge (not the entire border width).
* Redrawing the entire border would cause text to be cut off. */
draw_util_rectangle(conn, &(con->parent->frame_buffer), p->color->background, draw_util_rectangle(conn, &(con->parent->frame_buffer), p->color->background,
dr->x + dr->width + br.width, dr->y, -br.width, dr->height); dr->x + dr->width - 2 * logical_px(1),
dr->y,
2 * logical_px(1),
dr->height);
} }
/* Draw a 1px separator line before and after every tab, so that tabs can /* Draw a 1px separator line before and after every tab, so that tabs can