]> Pileus Git - wmpus/blob - wm-wmii.c
Initial code for win32
[wmpus] / wm-wmii.c
1 #include <stdio.h>
2
3 #include "sys.h"
4 #include "wm.h"
5
6 typedef enum {
7         none, move, resize
8 } Mode_t;
9
10 win_t *kwin;
11 ptr_t  kptr;
12 Mode_t mode;
13
14 int wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr)
15 {
16         printf("wm_handle_key: %p - %x\n", win, key);
17         kptr = ptr;
18         kwin = win;
19
20         /* Raise */
21         if ((key == key_f1 && mod.ctrl) ||
22                         (key_mouse0 <= key && key <= key_mouse7))
23                 sys_raise(win);
24
25         /* Movement */
26         if (key_mouse0 <= key && key <= key_mouse7 &&
27                         mod.up && mode != none)
28                 return mode = none, 1;
29         else if (key == key_mouse1 && mod.ctrl)
30                 return mode = move, 1;
31         else if (key == key_mouse3 && mod.ctrl)
32                 return mode = resize, 1;
33
34         return 0;
35 }
36
37 int wm_handle_ptr(win_t *win, ptr_t ptr)
38 {
39         printf("wm_handle_ptr: %p - %d,%d %d,%d (%d) -- \n",
40                         win, ptr.x, ptr.y, ptr.rx, ptr.ry, mode);
41         int dx = ptr.rx - kptr.rx;
42         int dy = ptr.ry - kptr.ry;
43         if (mode == move)
44                 sys_move(kwin, kwin->x+dx, kwin->y+dy, kwin->w, kwin->h);
45         else if (mode == resize)
46                 sys_move(kwin, kwin->x, kwin->y, kwin->w+dx, kwin->h+dy);
47         return 0;
48 }
49
50 void wm_init(win_t *root)
51 {
52         sys_watch(root, key_f1,     MOD(.ctrl=1));
53         sys_watch(root, key_mouse1, MOD(.ctrl=1));
54         sys_watch(root, key_mouse3, MOD(.ctrl=1));
55 }