]> Pileus Git - wmpus/blob - wm-wmii.c
Initial code for x11/wmii
[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 void wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr)
15 {
16         printf("wm_handle_key: %p - %x %x\n", win, key, *(int*)&mod);
17         kptr = ptr;
18         kwin = win;
19         if (key == key_f1 && mod.ctrl)
20                 sys_raise(win);
21         else if (key_mouse0 <= key && key <= key_mouse7 && mod.up)
22                 mode = none;
23         else if (key == key_mouse1)
24                 mode = move;
25         else if (key == key_mouse3)
26                 mode = resize;
27 }
28
29 void wm_handle_ptr(win_t *win, ptr_t ptr)
30 {
31         printf("wm_handle_ptr: %p - %d,%d (%d)\n", win, ptr.x, ptr.y, mode);
32         int dx = ptr.rx - kptr.rx;
33         int dy = ptr.ry - kptr.ry;
34         if (mode == move)
35                 sys_move(kwin, kwin->x+dx, kwin->y+dy, kwin->w, kwin->h);
36         else if (mode == resize)
37                 sys_move(kwin, kwin->x, kwin->y, kwin->w+dx, kwin->h+dy);
38 }
39
40 void wm_init(win_t *root)
41 {
42         sys_watch(root, key_f1,     MOD(.ctrl=1));
43         sys_watch(root, key_mouse1, MOD(.ctrl=1));
44         sys_watch(root, key_mouse3, MOD(.ctrl=1));
45 }