wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit fcedcdcafdddffb9d8d328fe72a821aa9a08a8bc
parent c946b86cdf9cf9e588e99f895fed3556dcfd69fe
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Mon, 27 Mar 2006 09:38:41 +0200

replaced exclusive flag with swap ($MODKEY-Shift-{h,j,k,l})


Diffstat:
cmd/wm/area.c | 32++------------------------------
cmd/wm/bar.c | 2+-
cmd/wm/client.c | 35+++++++++++++++++++++++++++++------
cmd/wm/fs.c | 8++------
cmd/wm/wm.h | 3+--
config.mk | 2+-
rc/wmiirc | 11++++-------
7 files changed, 40 insertions(+), 53 deletions(-)

diff --git a/cmd/wm/area.c b/cmd/wm/area.c @@ -206,7 +206,6 @@ mode2str(int mode) switch(mode) { case Colequal: return "equal"; break; case Colstack: return "stack"; break; - case Colexcl: return "excl"; break; case Colmax: return "max"; break; default: break; } @@ -220,8 +219,6 @@ str2mode(char *arg) return Colequal; if(!strncmp("stack", arg, 6)) return Colstack; - if(!strncmp("excl", arg, 5)) - return Colexcl; if(!strncmp("max", arg, 4)) return Colmax; return -1; @@ -267,7 +264,7 @@ relax_area(Area *a) h = 0; for(i = 0; i < a->nframe; i++) { Frame *f = a->frame[i]; - if(a->mode == Colmax || a->mode == Colexcl) { + if(a->mode == Colmax) { if(h < f->rect.height) h = f->rect.height; } @@ -292,7 +289,7 @@ relax_area(Area *a) Frame *f = a->frame[i]; f->rect.x = a->rect.x + (a->rect.width - f->rect.width) / 2; f->rect.y = yoff; - if((a->mode != Colmax) && (a->mode != Colexcl)) + if(a->mode != Colmax) yoff = f->rect.y + f->rect.height + hdiff; resize_client(f->client, &f->rect, False); } @@ -341,31 +338,6 @@ arrange_column(Area *a) resize_client(f->client, &f->rect, True); } break; - case Colexcl: - if(a->nframe > 1) { - Client *c = a->frame[a->sel]->client; - Area *to = nil; - for(i = area2index(a) + 1; i < a->view->narea; i++) - if(a->view->area[i]->mode != Colexcl) { - to = a->view->area[i]; - break; - } - if(!to) { - to = alloc_area(a->view); - a->view->sel = area2index(a); - arrange_view(a->view, True); - } - while(a->nframe > 1) { - for(i = 0; i < a->nframe; i++) { - Client *cl = a->frame[i]->client; - if(cl != c) { - detach_fromarea(a, cl); - attach_toarea(to, cl); - break; - } - } - } - } Fallthrough: case Colmax: for(i = 0; i < a->nframe; i++) { diff --git a/cmd/wm/bar.c b/cmd/wm/bar.c @@ -122,7 +122,7 @@ draw_bar() l->rect.x = 0; l->rect.y = 0; l->rect.width = brect.height; - if(strlen(l->name)) + if(strlen(l->data)) l->rect.width += XTextWidth(xfont, l->data, strlen(l->data)); l->rect.height = brect.height; w += l->rect.width; diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -508,30 +508,53 @@ select_client(Client *c, char *arg) } void -restack_client(Client *c, char *arg) +swap_client(Client *c, char *arg) { Frame *f = c->frame[c->sel]; - Area *a = f->area; + Area *o, *a = f->area; + View *v = a->view; int i = area2index(a), j = frame2index(f); if(i == -1 || j == -1) return; - if(!strncmp(arg, "up", 3)) { + if(!strncmp(arg, "prev", 5)) { + if(i == 1) + o = v->area[v->narea - 1]; + else + o = v->area[i - 1]; + goto Swaparea; + } + else if(!strncmp(arg, "next", 5)) { + if(i < v->narea - 1) + o = v->area[i + 1]; + else + o = v->area[1]; +Swaparea: + if(o == a) + return; + a->frame[j] = o->frame[o->sel]; + o->frame[o->sel]->area = a; + o->frame[o->sel] = f; + f->area = a; + arrange_column(o); + } + else if(!strncmp(arg, "up", 3)) { if(j) i = j - 1; else i = a->nframe - 1; + a->frame[j] = a->frame[i]; + a->frame[i] = f; } else if(!strncmp(arg, "down", 5)) { if(j + 1 < a->nframe) i = j + 1; else i = 0; + a->frame[j] = a->frame[i]; + a->frame[i] = f; } - - a->frame[j] = a->frame[i]; - a->frame[i] = f; arrange_column(a); focus_client(c); } diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -1195,16 +1195,12 @@ xwrite(IXPConn *c, Fcall *fcall) kill_client(f->client); else if(!strncmp(buf, "sendto ", 7)) send2area_client(f->client, &buf[7]); - else if(!strncmp(buf, "restack ", 8)) - restack_client(f->client, &buf[8]); + else if(!strncmp(buf, "swap ", 5)) + swap_client(f->client, &buf[5]); break; case FsDGclient: if(!strncmp(buf, "kill", 5)) kill_client(client[i1]); - else if(!strncmp(buf, "sendto ", 7)) - send2area_client(client[i1], &buf[7]); - else if(!strncmp(buf, "restack ", 8)) - restack_client(client[i1], &buf[8]); break; default: break; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -22,7 +22,6 @@ enum { enum { Colequal, Colstack, - Colexcl, Colmax }; @@ -212,7 +211,6 @@ void resize_area(Client *c, XRectangle *r, XPoint *pt); int str2mode(char *arg); char *mode2str(int mode); Bool clientofarea(Area *a, Client *c); -void restack_client(Client *c, char *arg); /* bar.c */ Label *get_label(char *name); @@ -246,6 +244,7 @@ void resize_all_clients(); void focus(Client *c); int cid2index(unsigned short id); Bool clienthastag(Client *c, const char *t); +void swap_client(Client *c, char *arg); /* event.c */ void init_x_event_handler(); diff --git a/config.mk b/config.mk @@ -8,7 +8,7 @@ MANPREFIX = ${PREFIX}/share/man X11INC = /usr/X11R6/include X11LIB = /usr/X11R6/lib -VERSION = 3-current +VERSION = 20060327 # includes and libs LIBS = -L${PREFIX}/lib -L/usr/lib -lc -lm -L${X11LIB} -lX11 diff --git a/rc/wmiirc b/rc/wmiirc @@ -63,7 +63,6 @@ $MODKEY-n $MODKEY-m $MODKEY-s $MODKEY-e -$MODKEY-x $MODKEY-0 $MODKEY-1 $MODKEY-2 @@ -121,18 +120,16 @@ do xwrite /view/sel/mode stack;; $MODKEY-e) xwrite /view/sel/mode equal;; - $MODKEY-x) - xwrite /view/sel/mode excl;; $MODKEY-n) xwrite /view/sel/sel/ctl sendto new;; $MODKEY-Shift-h) - xwrite /view/sel/sel/ctl sendto prev;; + xwrite /view/sel/sel/ctl swap prev;; $MODKEY-Shift-l) - xwrite /view/sel/sel/ctl sendto next;; + xwrite /view/sel/sel/ctl swap next;; $MODKEY-Shift-j) - xwrite /view/sel/sel/ctl restack down;; + xwrite /view/sel/sel/ctl swap down;; $MODKEY-Shift-k) - xwrite /view/sel/sel/ctl restack up;; + xwrite /view/sel/sel/ctl swap up;; $MODKEY-space) xwrite /view/ctl select toggle;; $MODKEY-Shift-space)