# HG changeset patch # User paulo@localhost # Date 1240562057 25200 # Node ID a54de16f8277eed977492023be1cbf330fb64f7f # Parent faa4cb9d7bd615563d047d23ed859779c3f728d4 fix taskbar behavior when exceeding MAX_TASKS; bound moveresize() to windowarea diff -r faa4cb9d7bd6 -r a54de16f8277 client.c --- a/client.c Thu Apr 23 02:43:13 2009 -0700 +++ b/client.c Fri Apr 24 01:34:17 2009 -0700 @@ -500,6 +500,19 @@ nw = wAbs == 'W' ? w : sel->w + w; nh = hAbs == 'H' ? h : sel->h + h; + if(xAbs == 'X') { + if(nx < wax) + nx = wax; + else if(nx + nw + 2*BORDERPX > waw) + nx = wax + waw - nw - 2*BORDERPX; + } + if(yAbs == 'Y') { + if(ny < way) + ny = way; + else if(ny + nh + 2*BORDERPX > wah) + ny = way + wah - nh - 2*BORDERPX; + } + ox = sel->x; oy = sel->y; ow = sel->w; diff -r faa4cb9d7bd6 -r a54de16f8277 config.h --- a/config.h Thu Apr 23 02:43:13 2009 -0700 +++ b/config.h Fri Apr 24 01:34:17 2009 -0700 @@ -126,11 +126,11 @@ { MODKEY|ControlMask, XK_h, moveresize, "0X 0y 0w 0h" }, \ { MODKEY|ControlMask, XK_l, moveresize, "9000X 0y 0w 0h" }, \ { MODKEY|ControlMask, XK_j, moveresize, "0x 9000Y 0w 0h" }, \ - { MODKEY|ControlMask, XK_k, moveresize, "0x 15Y 0w 0h" }, \ + { MODKEY|ControlMask, XK_k, moveresize, "0x 0Y 0w 0h" }, \ { MODKEY|ShiftMask, XK_h, moveresize, "0x 0y -25w 0h" }, \ { MODKEY|ShiftMask, XK_l, moveresize, "0x 0y 25w 0h" }, \ { MODKEY|ShiftMask, XK_j, moveresize, "0x 0y 0w 25h" }, \ { MODKEY|ShiftMask, XK_k, moveresize, "0x 0y 0w -25h" }, \ }; -#define MAX_TASKS 10 /* max number of apps in taskbar */ +#define MAX_TASKS 13 /* max number of apps in taskbar */ diff -r faa4cb9d7bd6 -r a54de16f8277 event.c --- a/event.c Thu Apr 23 02:43:13 2009 -0700 +++ b/event.c Fri Apr 24 01:34:17 2009 -0700 @@ -167,18 +167,18 @@ } else if(tbarwin == ev->window) { int i, w; + for(i=0, c = clients; c; c = c->next) { + if(isvisible(c)) + i++; + } + if(!i || i >= MAX_TASKS) + return; + else + w = sw/i; switch(ev->button) { case Button4: focusprev(NULL); return; break; case Button5: focusnext(NULL); return; break; } - for(i=0, c = clients; c; c = c->next) { - if(isvisible(c)) - i++; - } - if(!i && i >= MAX_TASKS) - return; - else - w = sw/i; for(i=1, c = clients; c && i*w<=sw; c = c->next, i++) { for(; c && !isvisible(c); c = c->next); if(i*w > ev->x) {