X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=client.c;h=6b0322ea19cd98bea72e2252b995d6afd480ac2c;hb=c34df2c1b656fcdd2be2b4f9f827d88872dd2717;hp=2f1e2b3b391e21c9f9d1f449d15dddcd41b41ed0;hpb=d800ec05ff63451193a0b858c114f5144534c2a1;p=dwm.git diff --git a/client.c b/client.c index 2f1e2b3..6b0322e 100644 --- a/client.c +++ b/client.c @@ -54,19 +54,6 @@ grabbuttons(Client *c, Bool focused) { GrabModeAsync, GrabModeSync, None, None); } -static void -resizetitle(Client *c) { - c->tw = textw(c->name); - if(c->tw > c->w) - c->tw = c->w + 2; - c->tx = c->x + c->w - c->tw + 2; - 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); -} - static int xerrordummy(Display *dsply, XErrorEvent *ee) { return 0; @@ -81,6 +68,23 @@ ban(Client *c) { } void +configure(Client *c) { + XEvent synev; + + synev.type = ConfigureNotify; + synev.xconfigure.display = dpy; + synev.xconfigure.event = c->win; + synev.xconfigure.window = c->win; + synev.xconfigure.x = c->x; + synev.xconfigure.y = c->y; + synev.xconfigure.width = c->w; + synev.xconfigure.height = c->h; + synev.xconfigure.border_width = c->border; + synev.xconfigure.above = None; + XSendEvent(dpy, c->win, True, NoEventMask, &synev); +} + +void focus(Client *c) { Client *old; @@ -206,10 +210,6 @@ manage(Window w, XWindowAttributes *wa) { c->w = c->tw = wa->width; c->h = wa->height; c->th = bh; - c->rx = sx; - c->ry = bh; - c->rw = sw; - c->rh = sh - bh; c->border = 0; updatesize(c); @@ -237,11 +237,13 @@ manage(Window w, XWindowAttributes *wa) { CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); grabbuttons(c, False); + updatetitle(c); settags(c, getclient(trans)); if(!c->isfloat) c->isfloat = trans || (c->maxw && c->minw && c->maxw == c->minw && c->maxh == c->minh); + resizetitle(c); if(clients) clients->prev = c; @@ -249,7 +251,6 @@ manage(Window w, XWindowAttributes *wa) { c->snext = stack; stack = clients = c; - updatetitle(c); ban(c); XMapWindow(dpy, c->win); XMapWindow(dpy, c->twin); @@ -303,10 +304,24 @@ resize(Client *c, Bool sizehints, Corner sticky) { else wc.border_width = 1; XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc); + configure(c); XSync(dpy, False); } void +resizetitle(Client *c) { + c->tw = textw(c->name); + if(c->tw > c->w) + c->tw = c->w + 2; + c->tx = c->x + c->w - c->tw + 2; + 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 updatesize(Client *c) { long msize; XSizeHints size; @@ -368,7 +383,6 @@ updatetitle(Client *c) { } } XFree(name.value); - resizetitle(c); } void