X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=wm-wmii.c;h=ace88143233e6ead82fee5ed1f674243a31ed622;hb=867339836f524f0d66d8b8100a303a954d9184b7;hp=cb5111da7272a73918631dfb4d8ef8adfd782336;hpb=affe32b94267ef0c1f38a7954bee255a55350cbb;p=wmpus diff --git a/wm-wmii.c b/wm-wmii.c index cb5111d..ace8814 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -5,7 +5,7 @@ #include "sys.h" #include "wm.h" -#define MODKEY ctrl +#define MODKEY alt /* Loca types */ struct win_wm { @@ -201,6 +201,10 @@ int wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr) else if (key == key_mouse3 && mod.MODKEY) return set_mode(resize,win,ptr), 1; + /* Focus change */ + if (key == key_enter) + sys_focus(win); + return 0; } @@ -208,16 +212,40 @@ int wm_handle_ptr(win_t *cwin, ptr_t ptr) { //printf("wm_handle_ptr: %p - %d,%d %d,%d (%d) -- \n", // cwin, ptr.x, ptr.y, ptr.rx, ptr.ry, move_mode); + if (move_mode == none) return 0; - win_t *mwin = move_win; + + /* Tiling */ int dx = ptr.rx - move_prev.rx; int dy = ptr.ry - move_prev.ry; move_prev = ptr; - if (move_mode == move) - sys_move(mwin, mwin->x+dx, mwin->y+dy, mwin->w, mwin->h); - else if (move_mode == resize) - sys_move(mwin, mwin->x, mwin->y, mwin->w+dx, mwin->h+dy); + if (move_mode == resize) { + list_t *row = move_win->wm->row; + list_t *col = move_win->wm->col; + list_t *lower = row->next; + list_t *right = col->next; + if (lower) { + ((win_t*)row->data)->h += dy; + ((win_t*)lower->data)->h -= dy; + } + if (right) { + ((col_t*)col->data)->width += dx; + ((col_t*)right->data)->width -= dx; + } + arrange(wm_cols); + } + + /* Floating */ + //win_t *mwin = move_win; + //int dx = ptr.rx - move_prev.rx; + //int dy = ptr.ry - move_prev.ry; + //move_prev = ptr; + //if (move_mode == move) + // sys_move(mwin, mwin->x+dx, mwin->y+dy, mwin->w, mwin->h); + //else if (move_mode == resize) + // sys_move(mwin, mwin->x, mwin->y, mwin->w+dx, mwin->h+dy); + return 0; } @@ -226,6 +254,9 @@ void wm_insert(win_t *win) printf("wm_insert: %p\n", win); print_txt(wm_cols); + /* Watch enter/leave */ + sys_watch(win, key_enter, MOD()); + /* Add to screen */ col_t *col = wm_cols->data; int nrows = list_length(col->rows); @@ -260,7 +291,8 @@ void wm_init(win_t *root) sys_watch(root, key_f1, MOD(.MODKEY=1)); sys_watch(root, key_mouse1, MOD(.MODKEY=1)); sys_watch(root, key_mouse3, MOD(.MODKEY=1)); - key_t keys[] = {'h', 'j', 'k', 'l'}; + sys_watch(root, key_enter, MOD()); + Key_t keys[] = {'h', 'j', 'k', 'l'}; for (int i = 0; i < countof(keys); i++) { sys_watch(root, keys[i], MOD(.MODKEY=1)); sys_watch(root, keys[i], MOD(.MODKEY=1,.shift=1));