X-Git-Url: http://pileus.org/git/?p=wmpus;a=blobdiff_plain;f=wm-wmii.c;h=444a5968084fb5fffe0d6208ce817af959d77f14;hp=5faf9c9f7d7d485c367182008b64d90cd4df0ab6;hb=d7d862c402564b4fe29f17e1a55cdbb2967aa6fd;hpb=c00388973ecb2af94cc7b74ef762f0b8d10741e6 diff --git a/wm-wmii.c b/wm-wmii.c index 5faf9c9..444a596 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -5,36 +5,46 @@ typedef enum { none, move, resize -} mode_t; +} Mode_t; win_t *kwin; ptr_t kptr; -mode_t mode; +Mode_t mode; -void wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr) +int 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); + printf("wm_handle_key: %p - %x\n", win, key); kptr = ptr; kwin = win; - if (key == key_f1 && mod.ctrl) + + /* Raise */ + if ((key == key_f1 && mod.ctrl) || + (key_mouse0 <= key && key <= key_mouse7)) 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; + + /* Movement */ + if (key_mouse0 <= key && key <= key_mouse7 && + mod.up && mode != none) + return mode = none, 1; + else if (key == key_mouse1 && mod.ctrl) + return mode = move, 1; + else if (key == key_mouse3 && mod.ctrl) + return mode = resize, 1; + + return 0; } -void wm_handle_ptr(win_t *win, ptr_t ptr) +int wm_handle_ptr(win_t *win, ptr_t ptr) { - printf("wm_handle_ptr: %p - %d,%d (%d)\n", win, ptr.x, ptr.y, mode); + printf("wm_handle_ptr: %p - %d,%d %d,%d (%d) -- \n", + win, ptr.x, ptr.y, ptr.rx, ptr.ry, 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); + return 0; } void wm_init(win_t *root)