+ /* Restore from fullscreen */
+ switch (state) {
+ case ST_SHOW:
+ printf("sys_show: show\n");
+ if (win->sys->state == ST_FULL)
+ sys_move(win, win->x, win->y, win->w, win->h);
+ XSetWindowBorderWidth(win->sys->dpy, win->sys->xid, border);
+ XMapWindow(win->sys->dpy, win->sys->xid);
+ XSync(win->sys->dpy, False);
+ break;
+ case ST_FULL:
+ printf("sys_show: full\n");
+ win_t *screen = NULL;
+ for (list_t *cur = screens; cur; cur = cur->next) {
+ screen = cur->data;
+ if (win->x >= screen->x && win->x <= screen->x+screen->w &&
+ win->y >= screen->y && win->y <= screen->y+screen->h)
+ break;
+ }
+ XSetWindowBorderWidth(win->sys->dpy, win->sys->xid, 0);
+ XMapWindow(win->sys->dpy, win->sys->xid);
+ 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\n");
+ XMapWindow(win->sys->dpy, win->sys->xid);
+ break;
+ case ST_ICON:
+ printf("sys_show: icon\n");
+ break;
+ case ST_HIDE:
+ printf("sys_show: hide\n");
+ XUnmapWindow(win->sys->dpy, win->sys->xid);
+ break;
+ case ST_CLOSE:
+ printf("sys_show: close\n");
+ XDestroyWindow(win->sys->dpy, win->sys->xid);
+ break;
+ }
+ win->sys->state = state;
+}
+
+void sys_watch(win_t *win, event_t ev, mod_t mod)
+{
+ //printf("sys_watch: %p - %x %hhx\n", win, ev, mod);