+ static struct {
+ char *str;
+ int cmd;
+ } map[] = {
+ [ST_SHOW ] {"show" , SW_SHOW },
+ [ST_FULL ] {"full" , SW_MAXIMIZE},
+ [ST_SHADE] {"shade", SW_SHOW },
+ [ST_ICON ] {"icon" , SW_MINIMIZE},
+ [ST_HIDE ] {"hide" , SW_HIDE },
+ };
+ if (win->state != state && win->state == ST_SHADE)
+ SetWindowRgn(win->sys->hwnd, NULL, TRUE);
+ win->state = state;
+ printf("sys_show: %s\n", map[state].str);
+ ShowWindow(win->sys->hwnd, map[state].cmd);
+ if (state == ST_SHADE)
+ SetWindowRgn(win->sys->hwnd, CreateRectRgn(0,0,win->w,stack), TRUE);
+}
+
+void sys_watch(win_t *win, event_t ev, mod_t mod)
+{
+ (void)ev2w; // TODO
+ //printf("sys_watch: %p\n", win);
+}
+
+void sys_unwatch(win_t *win, event_t ev, mod_t mod)
+{
+ (void)ev2w; // TODO
+ //printf("sys_unwatch: %p\n", win);
+}
+
+list_t *sys_info(win_t *win)
+{
+ if (screens == NULL)
+ EnumDisplayMonitors(NULL, NULL, MonProc, (LPARAM)&screens);
+ return screens;