dwm.c
changeset 1254 d04ee4e2336d
parent 1253 81b40dd1b766
child 1255 c4152a0199c8
equal deleted inserted replaced
1253:81b40dd1b766 1254:d04ee4e2336d
   549 	}
   549 	}
   550 }
   550 }
   551 
   551 
   552 void
   552 void
   553 drawtext(const char *text, ulong col[ColLast], Bool invert) {
   553 drawtext(const char *text, ulong col[ColLast], Bool invert) {
   554 	int i, x, y, h;
   554 	int i, x, y, h, len, olen;
   555 	uint len, olen;
       
   556 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
   555 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
   557 	char buf[256];
   556 	char buf[256];
   558 
   557 
   559 	XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]);
   558 	XSetForeground(dpy, dc.gc, col[invert ? ColFG : ColBG]);
   560 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
   559 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
   610 		drawbar();
   609 		drawbar();
   611 }
   610 }
   612 
   611 
   613 void
   612 void
   614 focus(Client *c) {
   613 focus(Client *c) {
   615 	if(!c || (c && c->isbanned))
   614 	if(!c || c->isbanned)
   616 		for(c = stack; c && c->isbanned; c = c->snext);
   615 		for(c = stack; c && c->isbanned; c = c->snext);
   617 	if(sel && sel != c) {
   616 	if(sel && sel != c) {
   618 		grabbuttons(sel, False);
   617 		grabbuttons(sel, False);
   619 		XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]);
   618 		XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]);
   620 	}
   619 	}
   621 	if(c) {
   620 	if(c) {
   622 		detachstack(c);
   621 		detachstack(c);
   623 		attachstack(c);
   622 		attachstack(c);
   624 		grabbuttons(c, True);
   623 		grabbuttons(c, True);
   625 	}
       
   626 	sel = c;
       
   627 	if(c) {
       
   628 		XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
   624 		XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
   629 		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
   625 		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
   630 	}
   626 	}
   631 	else
   627 	else
   632 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
   628 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
       
   629 	sel = c;
   633 	drawbar();
   630 	drawbar();
   634 }
   631 }
   635 
   632 
   636 void
   633 void
   637 focusin(XEvent *e) { /* there are some broken focus acquiring clients */
   634 focusin(XEvent *e) { /* there are some broken focus acquiring clients */
  1563 	XMoveResizeWindow(dpy, barwin, wx, by, ww, bh);
  1560 	XMoveResizeWindow(dpy, barwin, wx, by, ww, bh);
  1564 }
  1561 }
  1565 
  1562 
  1566 void
  1563 void
  1567 updategeom(void) {
  1564 updategeom(void) {
       
  1565 #ifdef XINERAMA
  1568 	int i;
  1566 	int i;
  1569 #ifdef XINERAMA
       
  1570 	XineramaScreenInfo *info = NULL;
  1567 	XineramaScreenInfo *info = NULL;
  1571 
  1568 
  1572 	/* window area geometry */
  1569 	/* window area geometry */
  1573 	if(XineramaIsActive(dpy)) {
  1570 	if(XineramaIsActive(dpy)) {
  1574 		info = XineramaQueryScreens(dpy, &i);
  1571 		info = XineramaQueryScreens(dpy, &i);