about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client.c50
-rw-r--r--draw.c6
-rw-r--r--dwm.11
-rw-r--r--dwm.h5
-rw-r--r--event.c7
-rw-r--r--view.c14
6 files changed, 10 insertions, 73 deletions
diff --git a/client.c b/client.c
index 8110263..af13797 100644
--- a/client.c
+++ b/client.c
@@ -61,12 +61,6 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {
 /* extern functions */
 
 void
-ban(Client *c) {
-	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
-	XMoveWindow(dpy, c->twin, c->tx + 2 * sw, c->ty);
-}
-
-void
 configure(Client *c) {
 	XEvent synev;
 
@@ -121,16 +115,6 @@ getclient(Window w) {
 	return NULL;
 }
 
-Client *
-getctitle(Window w) {
-	Client *c;
-
-	for(c = clients; c; c = c->next)
-		if(c->twin == w)
-			return c;
-	return NULL;
-}
-
 void
 killclient(Arg *arg) {
 	if(!sel)
@@ -145,17 +129,15 @@ void
 manage(Window w, XWindowAttributes *wa) {
 	Client *c;
 	Window trans;
-	XSetWindowAttributes twa;
 
 	c = emallocz(sizeof(Client));
 	c->tags = emallocz(ntags * sizeof(Bool));
 	c->win = w;
 	c->border = 0;
-	c->x = c->tx = wa->x;
-	c->y = c->ty = wa->y;
-	c->w = c->tw = wa->width;
+	c->x = wa->x;
+	c->y = wa->y;
+	c->w = wa->width;
 	c->h = wa->height;
-	c->th = bh;
 	updatesizehints(c);
 	if(c->x + c->w + 2 * BORDERPX > sw)
 		c->x = sw - c->w - 2 * BORDERPX;
@@ -169,27 +151,18 @@ manage(Window w, XWindowAttributes *wa) {
 	XSelectInput(dpy, c->win,
 		StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
 	XGetTransientForHint(dpy, c->win, &trans);
-	twa.override_redirect = 1;
-	twa.background_pixmap = ParentRelative;
-	twa.event_mask = ExposureMask | EnterWindowMask;
-	c->twin = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
-			0, DefaultDepth(dpy, screen), CopyFromParent,
-			DefaultVisual(dpy, screen),
-			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
 	grabbuttons(c, False);
 	updatetitle(c);
 	settags(c, getclient(trans));
 	if(!c->isfloat)
 		c->isfloat = trans || c->isfixed;
-	resizetitle(c);
 	if(clients)
 		clients->prev = c;
 	c->next = clients;
 	c->snext = stack;
 	stack = clients = c;
-	ban(c);
+	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
 	XMapWindow(dpy, c->win);
-	XMapWindow(dpy, c->twin);
 	if(isvisible(c))
 		focus(c);
 	arrange();
@@ -228,7 +201,6 @@ resize(Client *c, Bool sizehints, Corner sticky) {
 		c->x = sw - c->w;
 	if(c->y > sh)
 		c->y = sh - c->h;
-	resizetitle(c);
 	wc.x = c->x;
 	wc.y = c->y;
 	wc.width = c->w;
@@ -243,19 +215,6 @@ resize(Client *c, Bool sizehints, Corner sticky) {
 }
 
 void
-resizetitle(Client *c) {
-	c->tw = textw(c->name);
-	if(c->tw > c->w)
-		c->tw = c->w + 2 * BORDERPX;
-	c->tx = c->x + c->w - c->tw + 2 * BORDERPX;
-	c->ty = c->y;
-	if(isvisible(c))
-		XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th);
-	else
-		XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th);
-}
-
-void
 updatesizehints(Client *c) {
 	long msize;
 	XSizeHints size;
@@ -331,7 +290,6 @@ unmanage(Client *c) {
 		focus(nc);
 	}
 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
-	XDestroyWindow(dpy, c->twin);
 	free(c->tags);
 	free(c);
 	XSync(dpy, False);
diff --git a/draw.c b/draw.c
index ba99ee0..0ee362c 100644
--- a/draw.c
+++ b/draw.c
@@ -141,16 +141,10 @@ void
 drawclient(Client *c) {
 	if(c == sel && issel) {
 		drawstatus();
-		XUnmapWindow(dpy, c->twin);
 		XSetWindowBorder(dpy, c->win, dc.sel[ColBG]);
 		return;
 	}
 	XSetWindowBorder(dpy, c->win, dc.norm[ColBG]);
-	XMapWindow(dpy, c->twin);
-	dc.x = dc.y = 0;
-	dc.w = c->tw;
-	drawtext(c->name, dc.norm, False, False);
-	XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);
 	XSync(dpy, False);
 }
 
diff --git a/dwm.1 b/dwm.1
index e7a5a44..5783e07 100644
--- a/dwm.1
+++ b/dwm.1
@@ -26,7 +26,6 @@ which are applied to one or more windows are indicated with an empty square in
 the top left corner.
 .P
 dwm draws a 1-pixel border around windows to indicate the focus state.
-Unfocused windows contain a small bar in front of them displaying their title.
 .SH OPTIONS
 .TP
 .B \-v
diff --git a/dwm.h b/dwm.h
index 6a26e07..0cdfad2 100644
--- a/dwm.h
+++ b/dwm.h
@@ -78,7 +78,6 @@ struct Client {
 	int proto;
 	int x, y, w, h;
 	int rx, ry, rw, rh; /* revert geometry */
-	int tx, ty, tw, th; /* title window geometry */
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	long flags; 
 	unsigned int border;
@@ -88,7 +87,6 @@ struct Client {
 	Client *prev;
 	Client *snext;
 	Window win;
-	Window twin;
 };
 
 extern const char *tags[];			/* all tags */
@@ -110,15 +108,12 @@ extern Display *dpy;
 extern Window root, barwin;
 
 /* client.c */
-extern void ban(Client *c);			/* ban c from screen */
 extern void configure(Client *c);		/* send synthetic configure event */
 extern void focus(Client *c);			/* focus c, c may be NULL */
 extern Client *getclient(Window w);		/* return client of w */
-extern Client *getctitle(Window w);		/* return client of title window */
 extern void killclient(Arg *arg);		/* kill c nicely */
 extern void manage(Window w, XWindowAttributes *wa);	/* manage new client */
 extern void resize(Client *c, Bool sizehints, Corner sticky); /* resize c*/
-extern void resizetitle(Client *c);		/* resizes c->twin correctly */
 extern void updatesizehints(Client *c);		/* update the size hint variables of c */
 extern void updatetitle(Client *c);		/* update the name of c */
 extern void unmanage(Client *c);		/* destroy c */
diff --git a/event.c b/event.c
index 2deef14..a9d2fbb 100644
--- a/event.c
+++ b/event.c
@@ -196,7 +196,7 @@ configurerequest(XEvent *e) {
 		if(c->isfloat) {
 			resize(c, False, TopLeft);
 			if(!isvisible(c))
-				ban(c);
+				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
 		}
 		else
 			arrange();
@@ -230,7 +230,7 @@ enternotify(XEvent *e) {
 
 	if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
 		return;
-	if(((c = getclient(ev->window)) || (c = getctitle(ev->window))) && isvisible(c))
+	if((c = getclient(ev->window)) && isvisible(c))
 		focus(c);
 	else if(ev->window == root) {
 		issel = True;
@@ -247,8 +247,6 @@ expose(XEvent *e) {
 	if(ev->count == 0) {
 		if(barwin == ev->window)
 			drawstatus();
-		else if((c = getctitle(ev->window)))
-			drawclient(c);
 	}
 }
 
@@ -331,7 +329,6 @@ propertynotify(XEvent *e) {
 		}
 		if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
 			updatetitle(c);
-			resizetitle(c);
 			drawclient(c);
 		}
 	}
diff --git a/view.c b/view.c
index 4e2ffb3..b8dd79a 100644
--- a/view.c
+++ b/view.c
@@ -59,7 +59,7 @@ dofloat(void) {
 			resize(c, True, TopLeft);
 		}
 		else
-			ban(c);
+			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
 	}
 	if(!sel || !isvisible(sel)) {
 		for(c = stack; c && !isvisible(c); c = c->snext);
@@ -109,8 +109,7 @@ dotile(void) {
 			i++;
 		}
 		else
-			ban(c);
-
+			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
 	if(!sel || !isvisible(sel)) {
 		for(c = stack; c && !isvisible(c); c = c->snext);
 		focus(c);
@@ -191,19 +190,14 @@ restack(void) {
 		drawstatus();
 		return;
 	}
-	if(sel->isfloat || arrange == dofloat) {
+	if(sel->isfloat || arrange == dofloat)
 		XRaiseWindow(dpy, sel->win);
-		XRaiseWindow(dpy, sel->twin);
-	}
 	if(arrange != dofloat) {
-		if(!sel->isfloat) {
-			XLowerWindow(dpy, sel->twin);
+		if(!sel->isfloat)
 			XLowerWindow(dpy, sel->win);
-		}
 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
 			if(c == sel)
 				continue;
-			XLowerWindow(dpy, c->twin);
 			XLowerWindow(dpy, c->win);
 		}
 	}
587'>587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633