#include #include "sys.h" #include "wm.h" typedef enum { none, move, resize } mode_t; win_t *kwin; ptr_t kptr; mode_t mode; void wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr) { printf("wm_handle_key: %p - %x %x\n", win, key, *(int*)&mod); kptr = ptr; kwin = win; if (key == key_f1 && mod.ctrl) sys_raise(win); else if (key_mouse0 <= key && key <= key_mouse7 && mod.up) mode = none; else if (key == key_mouse1) mode = move; else if (key == key_mouse3) mode = resize; } void wm_handle_ptr(win_t *win, ptr_t ptr) { printf("wm_handle_ptr: %p - %d,%d (%d)\n", win, ptr.x, ptr.y, mode); int dx = ptr.rx - kptr.rx; int dy = ptr.ry - kptr.ry; if (mode == move) sys_move(kwin, kwin->x+dx, kwin->y+dy, kwin->w, kwin->h); else if (mode == resize) sys_move(kwin, kwin->x, kwin->y, kwin->w+dx, kwin->h+dy); } void wm_init(win_t *root) { sys_watch(root, key_f1, MOD(.ctrl=1)); sys_watch(root, key_mouse1, MOD(.ctrl=1)); sys_watch(root, key_mouse3, MOD(.ctrl=1)); }