JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied Connors aesthitic buf fix in tile(), thanks
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 01e8d1f..f176f4c 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -615,18 +615,26 @@ configurerequest(XEvent *e) {
                        c->bw = ev->border_width;
                else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
                        m = c->mon;
-                       if(ev->value_mask & CWX)
+                       if(ev->value_mask & CWX) {
+                               c->oldx = c->x;
                                c->x = m->mx + ev->x;
-                       if(ev->value_mask & CWY)
+                       }
+                       if(ev->value_mask & CWY) {
+                               c->oldy = c->y;
                                c->y = m->my + ev->y;
-                       if(ev->value_mask & CWWidth)
+                       }
+                       if(ev->value_mask & CWWidth) {
+                               c->oldw = c->w;
                                c->w = ev->width;
-                       if(ev->value_mask & CWHeight)
+                       }
+                       if(ev->value_mask & CWHeight) {
+                               c->oldh = c->h;
                                c->h = ev->height;
+                       }
                        if((c->x + c->w) > m->mx + m->mw && c->isfloating)
-                               c->x = m->mx + (m->mw / 2 - c->w / 2); /* center in x direction */
+                               c->x = m->mx + (m->mw / 2 - WIDTH(c) / 2); /* center in x direction */
                        if((c->y + c->h) > m->my + m->mh && c->isfloating)
-                               c->y = m->my + (m->mh / 2 - c->h / 2); /* center in y direction */
+                               c->y = m->my + (m->mh / 2 - HEIGHT(c) / 2); /* center in y direction */
                        if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))
                                configure(c);
                        if(ISVISIBLE(c))
@@ -1119,7 +1127,6 @@ manage(Window w, XWindowAttributes *wa) {
        c->h = c->oldh = wa->height;
        c->oldbw = wa->border_width;
        if(c->w == c->mon->mw && c->h == c->mon->mh) {
-               c->isfloating = True;
                c->x = c->mon->mx;
                c->y = c->mon->my;
                c->bw = 0;
@@ -1655,9 +1662,9 @@ tile(Monitor *m) {
        if(--n == 0)
                return;
        /* tile stack */
-       x = (m->wx + mw > c->x + c->w) ? c->x + c->w + 2 * c->bw : m->wx + mw;
+       x = (m->wx > c->x) ? c->x + mw + 2 * c->bw : m->wx + mw;
        y = m->wy;
-       w = (m->wx + mw > c->x + c->w) ? m->wx + m->ww - x : m->ww - mw;
+       w = (m->wx > c->x) ? m->wx + m->ww - x : m->ww - mw;
        h = m->wh / n;
        if(h < bh)
                h = m->wh;