X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=wm-wmii.c;h=6d007058201e81a6154c0e81467b3c291ed351ba;hb=b181cd4a07b96f170a28a4580a96dfd8aa32aedb;hp=2cebd9f04919adc5eb68222358b976ba93d14476;hpb=eefa2034ad0f5c2ef5eb478984cfc53a6a40c6b7;p=wmpus diff --git a/wm-wmii.c b/wm-wmii.c index 2cebd9f..6d00705 100644 --- a/wm-wmii.c +++ b/wm-wmii.c @@ -477,12 +477,14 @@ static void wm_update_dpy(dpy_t *dpy) /* Scale each column vertically */ for (list_t *lcol = dpy->cols; lcol; lcol = lcol->next) { col_t *col = lcol->data; + int nrows = list_length(col->rows); ty = 0; for (list_t *lrow = col->rows; lrow; lrow = lrow->next) ty += ROW(lrow)->height; y = dpy->geom->y; - my = dpy->geom->h - (list_length(col->rows)+1)*MARGIN; - sy = my - (list_length(col->rows)-1)*STACK; + my = dpy->geom->h - (MARGIN + (nrows-1)* MARGIN + MARGIN); + sy = dpy->geom->h - (MARGIN + (nrows-1)*(MARGIN/2) + MARGIN) + - (nrows-1)* STACK; for (list_t *lrow = col->rows; lrow; lrow = lrow->next) { win_t *win = ROW(lrow)->win; win->h = ROW(lrow)->height; @@ -492,17 +494,19 @@ static void wm_update_dpy(dpy_t *dpy) sys_move(win, x+MARGIN, y+MARGIN, col->width, win->h * ((float)my / ty)); height = win->h; + y += height + MARGIN; break; case stack: if (lrow->next && ROW(lrow->next)->win == col->row->win) { /* Hack to prevent flashing */ win_t *next = ROW(lrow->next)->win; - sys_move(next, x+MARGIN, y+MARGIN+STACK+MARGIN, + sys_move(next, x+MARGIN, y+MARGIN+STACK+MARGIN/2, col->width, sy); } height = win == col->row->win ? sy : STACK; sys_move(win, x+MARGIN, y+MARGIN, col->width, height); + y += height + (MARGIN/2); break; case max: case tab: @@ -512,7 +516,6 @@ static void wm_update_dpy(dpy_t *dpy) sys_raise(win); break; } - y += height + MARGIN; ROW(lrow)->height = win->h; } x += col->width + MARGIN; @@ -550,12 +553,17 @@ int wm_handle_key(win_t *win, Key_t key, mod_t mod, ptr_t ptr) // mod.win ? 'w' : '-'); /* Mouse movement */ - if (key_mouse0 <= key && key <= key_mouse7 && mod.up) - return set_move(win,ptr,none), 0; - else if (key == key_mouse1 && mod.MODKEY) - return set_move(win,ptr,move), 1; - else if (key == key_mouse3 && mod.MODKEY) - return set_move(win,ptr,resize), 1; + if (key_mouse0 <= key && key <= key_mouse7) { + if (key == key_mouse1 && mod.MODKEY && !mod.up) + return set_move(win,ptr,move), 1; + if (key == key_mouse3 && mod.MODKEY && !mod.up) + return set_move(win,ptr,resize), 1; + if (move_mode != none && mod.up) + return set_move(win,ptr,none), 1; + if (key == key_mouse1 && !mod.up && win->h == STACK) + return wm_update(), 0; + return 0; + } /* Only handle key-down */ if (mod.up)