- XConfigureWindow(win->sys->dpy, win->sys->xid,
- CWX|CWY|CWWidth|CWHeight, &(XWindowChanges) {
- .x = win->x,
- .y = win->y,
- .width = win->w,
- .height = win->h,
- });
- XMoveResizeWindow(win->sys->dpy, win->sys->xid,
- screen->x - screen->sys->strut.left,
- screen->y - screen->sys->strut.top,
- screen->w + screen->sys->strut.left + screen->sys->strut.right,
- screen->h + screen->sys->strut.top + screen->sys->strut.bottom);
- XRaiseWindow(win->sys->dpy, win->sys->xid);
- break;
- case ST_SHADE:
- printf("sys_show: shade %p\n", win);
+ else if (state == ST_HIDE)
+ XUnmapWindow(win->sys->dpy, win->sys->xid);
+
+ /* Resize windows */
+ if (state == ST_SHOW) {
+ sys_move(win, win->x, win->y, win->w, win->h);
+ } else if (state == ST_MAX) {
+ sys_move(win, screen->x, screen->y, screen->w, screen->h);
+ } else if (state == ST_FULL) {
+ XWindowChanges wc = {
+ .x = screen->x - screen->sys->strut.left ,
+ .y = screen->y - screen->sys->strut.top ,
+ .width = screen->w + screen->sys->strut.left + screen->sys->strut.right,
+ .height = screen->h + screen->sys->strut.top + screen->sys->strut.bottom
+ };
+ win->x = wc.x; win->y = wc.y;
+ win->w = wc.width; win->h = wc.height;
+ XConfigureWindow(win->sys->dpy, win->sys->xid, CWX|CWY|CWWidth|CWHeight, &wc);
+ XMoveResizeWindow(win->sys->dpy, win->sys->xid, wc.x, wc.y, wc.width, wc.height);
+ } else if (state == ST_SHADE) {