From 4be3178d4d360c2996217d811e61161c84d25898 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 11 May 2011 22:01:09 +0200 Subject: [PATCH] =?UTF-8?q?Bugfix:=20Don=E2=80=99t=20fill=20split=20cons?= =?UTF-8?q?=20etc.=20with=20client=20background=20color=20(fixes=20nested?= =?UTF-8?q?=20decoration=20rendering)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: #359 --- src/x.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/x.c b/src/x.c index 358a2201..76add0ff 100644 --- a/src/x.c +++ b/src/x.c @@ -303,28 +303,30 @@ void x_draw_decoration(Con *con) { deco_rect.height = 0; /* 2: draw the client.background, but only for the parts around the client_rect */ - xcb_rectangle_t background[] = { - /* top area */ - { 0, 0, r->width, w->y }, - /* bottom area */ - { 0, (w->y + w->height), r->width, r->height - (w->y + w->height) }, - /* left area */ - { 0, 0, w->x, r->height }, - /* right area */ - { w->x + w->width, 0, r->width - (w->x + w->width), r->height } - }; + if (con->window != NULL) { + xcb_rectangle_t background[] = { + /* top area */ + { 0, 0, r->width, w->y }, + /* bottom area */ + { 0, (w->y + w->height), r->width, r->height - (w->y + w->height) }, + /* left area */ + { 0, 0, w->x, r->height }, + /* right area */ + { w->x + w->width, 0, r->width - (w->x + w->width), r->height } + }; #if 0 - for (int i = 0; i < 4; i++) - DLOG("rect is (%d, %d) with %d x %d\n", - background[i].x, - background[i].y, - background[i].width, - background[i].height - ); + for (int i = 0; i < 4; i++) + DLOG("rect is (%d, %d) with %d x %d\n", + background[i].x, + background[i].y, + background[i].width, + background[i].height + ); #endif - xcb_change_gc_single(conn, con->pm_gc, XCB_GC_FOREGROUND, config.client.background); - xcb_poly_fill_rectangle(conn, con->pixmap, con->pm_gc, sizeof(background) / sizeof(xcb_rectangle_t), background); + xcb_change_gc_single(conn, con->pm_gc, XCB_GC_FOREGROUND, config.client.background); + xcb_poly_fill_rectangle(conn, con->pixmap, con->pm_gc, sizeof(background) / sizeof(xcb_rectangle_t), background); + } /* 3: draw a rectangle in border color around the client */ if (p->border_style != BS_NONE && p->con_is_leaf) {