- c->x = ocx + (ev.xmotion.x - x1);
- c->y = ocy + (ev.xmotion.y - y1);
- resize(c, False, TopLeft);
+ nx = ocx + (ev.xmotion.x - x1);
+ ny = ocy + (ev.xmotion.y - y1);
+ if(abs(wax + nx) < SNAP)
+ nx = wax;
+ else if(abs((wax + waw) - (nx + c->w + 2 * c->border)) < SNAP)
+ nx = wax + waw - c->w - 2 * c->border;
+ if(abs(way - ny) < SNAP)
+ ny = way;
+ else if(abs((way + wah) - (ny + c->h + 2 * c->border)) < SNAP)
+ ny = way + wah - c->h - 2 * c->border;
+ resize(c, nx, ny, c->w, c->h, False);