#include "sys.h"
#include "wm.h"
-#define MODKEY ctrl
+#define MODKEY alt
/* Loca types */
struct win_wm {
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;
}
{
//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;
}
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);
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));