xcb_rectangle_t topline = { br.x, 0, con->rect.width + br.width + br.x, br.y };
xcb_poly_fill_rectangle(conn, con->pixmap, con->pm_gc, 1, &topline);
}
+
+ /* Highlight the side of the border at which the next window will be
+ * opened if we are rendering a single window within a split container
+ * (which is undistinguishable from a single window outside a split
+ * container otherwise. */
+ if (TAILQ_NEXT(con, nodes) == NULL &&
+ TAILQ_PREV(con, nodes_head, nodes) == NULL &&
+ con->parent->type != CT_FLOATING_CON) {
+ xcb_change_gc(conn, con->pm_gc, XCB_GC_FOREGROUND, (uint32_t[]){ p->color->indicator });
+ if (con_orientation(con->parent) == HORIZ)
+ xcb_poly_fill_rectangle(conn, con->pixmap, con->pm_gc, 1, (xcb_rectangle_t[]){
+ { r->width + br.width + br.x, 0, r->width, r->height + br.height } });
+ else
+ xcb_poly_fill_rectangle(conn, con->pixmap, con->pm_gc, 1, (xcb_rectangle_t[]){
+ { br.x, r->height + br.height + br.y, r->width - (2 * br.x), r->height } });
+ }
+
}
- /* if this is a borderless/1pixel window, we don’t * need to render the
+ /* if this is a borderless/1pixel window, we don’t need to render the
* decoration. */
if (p->border_style != BS_NORMAL)
goto copy_pixmaps;
con->deco_rect.x + 2 + indent_px, con->deco_rect.y + text_offset_y,
con->deco_rect.width - 2 - indent_px);
+ /* Since we don’t clip the text at all, it might in some cases be painted
+ * on the border pixels on the right side of a window. Therefore, we draw
+ * the right border again after rendering the text (and the unconnected
+ * lines in border color). */
+
+ /* Draw a separator line after every tab (except the last one), so that
+ * tabs can be easily distinguished. */
+ if (parent->layout == L_TABBED && TAILQ_NEXT(con, nodes) != NULL) {
+ xcb_change_gc(conn, parent->pm_gc, XCB_GC_FOREGROUND, (uint32_t[]){ p->color->border });
+ } else {
+ xcb_change_gc(conn, parent->pm_gc, XCB_GC_FOREGROUND, (uint32_t[]){ p->color->background });
+ }
+ xcb_poly_line(conn, XCB_COORD_MODE_ORIGIN, parent->pixmap, parent->pm_gc, 4,
+ (xcb_point_t[]){
+ { dr->x + dr->width - 1, dr->y },
+ { dr->x + dr->width - 1, dr->y + dr->height },
+ { dr->x + dr->width - 2, dr->y },
+ { dr->x + dr->width - 2, dr->y + dr->height }
+ });
+
+ xcb_change_gc(conn, parent->pm_gc, XCB_GC_FOREGROUND, (uint32_t[]){ p->color->border });
+ xcb_poly_segment(conn, parent->pixmap, parent->pm_gc, 2, segments);
+
copy_pixmaps:
xcb_copy_area(conn, con->pixmap, con->frame, con->pm_gc, 0, 0, 0, 0, con->rect.width, con->rect.height);
}