wmii

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

commit 5e43254a12dd7eafe2ccc9890eeb27d532bdbc61
parent b42643433ebf49599e0027fb3c234bf0c4fa5079
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Mon, 27 Mar 2006 07:46:12 +0200

removed capacity (doing that as exclusive mode is saner)


Diffstat:
cmd/wm/area.c | 61+++----------------------------------------------------------
cmd/wm/client.c | 53+++++++++++++++++++++++++++++------------------------
cmd/wm/fs.c | 59+++++------------------------------------------------------
cmd/wm/view.c | 2+-
cmd/wm/wm.h | 7++-----
rc/wmiirc | 4++--
6 files changed, 42 insertions(+), 144 deletions(-)

diff --git a/cmd/wm/area.c b/cmd/wm/area.c @@ -116,59 +116,12 @@ void send2area(Area *to, Area *from, Client *c) { c->revert = from; - detach_fromarea(from, c, True); + detach_fromarea(from, c); attach_toarea(to, c); focus_client(c); } void -pre_attach(Area *a) -{ - Area *new = nil; - Client *c; - View *v = a->view; - unsigned int i, j; - - if(!a->capacity || (a->nframe < a->capacity)) - return; - i = area2index(a); - for(j = i + 1; j < v->narea; j++) - if(!v->area[j]->capacity - || (v->area[j]->capacity > v->area[j]->nframe)) - { - new = v->area[j]; - break; - } - if(!new) { - new = alloc_area(v); - arrange_view(v, True); - } - c = a->frame[a->sel]->client; - detach_fromarea(a, c, False); - attach_toarea(new, c); - arrange_area(new); -} - -void -post_detach(Area *a) -{ - Client *c; - Area *det; - View *v = a->view; - unsigned int i = area2index(a); - - if(!a->capacity || i + 1 >= v->narea) - return; - det = v->area[i + 1]; - if(!det->nframe) - return; - c = det->frame[det->sel]->client; - detach_fromarea(det, c, True); - attach_toarea(a, c); - arrange_area(a); -} - -void attach_toarea(Area *a, Client *c) { static unsigned short id = 1; @@ -176,7 +129,6 @@ attach_toarea(Area *a, Client *c) if(clientofview(a->view, c)) return; - pre_attach(a); f = cext_emallocz(sizeof(Frame)); f->id = id++; f->area = a; @@ -198,7 +150,7 @@ attach_toarea(Area *a, Client *c) } void -detach_fromarea(Area *a, Client *c, Bool postarrange) +detach_fromarea(Area *a, Client *c) { Frame *f; View *v = a->view; @@ -220,11 +172,6 @@ detach_fromarea(Area *a, Client *c, Bool postarrange) if(a->sel > 0) a->sel--; - if(!postarrange) - return; - - post_detach(a); - i = area2index(a); if(i && a->nframe) arrange_area(a); @@ -515,10 +462,8 @@ drop_moving(Frame *f, XRectangle *new, XPoint * pt) for(i = 1; (i < v->narea) && !blitz_ispointinrect(pt->x, pt->y, &v->area[i]->rect); i++); if((tgt = ((i < v->narea) ? v->area[i] : nil))) { - if(tgt != src) { + if(tgt != src) send2area(tgt, src, f->client); - arrange_area(tgt); - } else { for(i = 0; (i < src->nframe) && !blitz_ispointinrect( pt->x, pt->y, &src->frame[i]->rect); i++); diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -508,6 +508,35 @@ select_client(Client *c, char *arg) } void +restack_client(Client *c, char *arg) +{ + Frame *f = c->frame[c->sel]; + Area *a = f->area; + int i = area2index(a), j = frame2index(f); + + if(i == -1 || j == -1) + return; + + if(!strncmp(arg, "up", 3)) { + if(j) + i = j - 1; + else + i = a->nframe - 1; + } + 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; + arrange_area(a); + focus_client(c); +} + +void send2area_client(Client *c, char *arg) { const char *errstr; @@ -536,30 +565,6 @@ send2area_client(Client *c, char *arg) else to = v->area[1]; } - else if(!strncmp(arg, "up", 3)) { - int j = frame2index(f); - if(j) - i = j - 1; - else - i = a->nframe - 1; - a->frame[j] = a->frame[i]; - a->frame[i] = f; - arrange_area(a); - focus_client(c); - return; - } - else if(!strncmp(arg, "down", 5)) { - int j = frame2index(f); - if(j + 1 < a->nframe) - i = j + 1; - else - i = 0; - a->frame[j] = a->frame[i]; - a->frame[i] = f; - arrange_area(a); - focus_client(c); - return; - } else if(!strncmp(arg, "toggle", 7)) { if(i) to = v->area[0]; diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -55,7 +55,6 @@ static char Ebadvalue[] = "bad value"; * /view/1/ FsDarea * /view/1/ctl FsFctl command interface (area) * /view/1/mode FsFmode column mode - * /view/1/capacity FsFcapacity capacity of column * /view/1/sel/ FsDclient * /view/1/1/class FsFclass class:instance of client * /view/1/1/name FsFname name of client @@ -218,11 +217,6 @@ qid2name(Qid *qid) return nil; return "tags"; break; - case FsFcapacity: - if(i1 == -1 || i2 == -1) - return nil; - return "capacity"; - break; case FsFmode: if(i1 == -1 || i2 == -1) return nil; @@ -275,8 +269,6 @@ name2type(char *name, unsigned char dir_type) return FsFrules; if(!strncmp(name, "data", 5)) return FsFdata; - if(!strncmp(name, "capacity", 9)) - return FsFcapacity; if(!strncmp(name, "mode", 5)) return FsFmode; if(!strncmp(name, "tag", 4)) @@ -389,7 +381,6 @@ mkqid(Qid *dir, char *wname, Qid *new) return -1; goto Mkfile; break; - case FsFcapacity: case FsFmode: if(dir_i1 == -1 || dir_i2 == -1 || dir_type != FsDarea) return -1; @@ -545,10 +536,6 @@ type2stat(Stat *stat, char *wname, Qid *dir) case FsFdata: return mkstat(stat, dir, wname, (dir_i1 == nlabel) ? 0 : strlen(label[dir_i1]->data), DMREAD | DMWRITE); break; - case FsFcapacity: - snprintf(buf, sizeof(buf), "%u", view[dir_i1]->area[dir_i2]->capacity); - return mkstat(stat, dir, wname, strlen(buf), DMREAD | DMWRITE); - break; case FsFmode: return mkstat(stat, dir, wname, strlen(mode2str(view[dir_i1]->area[dir_i2]->mode)), DMREAD | DMWRITE); break; @@ -802,10 +789,8 @@ xread(IXPConn *c, Fcall *fcall) case FsDarea: /* jump to offset */ len = type2stat(&stat, "ctl", &m->qid); - if(i2) { + if(i2) len += type2stat(&stat, "mode", &m->qid); - len += type2stat(&stat, "capacity", &m->qid); - } if(view[i1]->area[i2]->nframe) len += type2stat(&stat, "sel", &m->qid); for(i = 0; i < view[i1]->area[i2]->nframe; i++) { @@ -971,8 +956,6 @@ xread(IXPConn *c, Fcall *fcall) if(i2) { fcall->count += type2stat(&stat, "mode", &m->qid); p = ixp_enc_stat(p, &stat); - fcall->count += type2stat(&stat, "capacity", &m->qid); - p = ixp_enc_stat(p, &stat); } if(view[i1]->area[i2]->nframe) { fcall->count += type2stat(&stat, "sel", &m->qid); @@ -1120,13 +1103,6 @@ xread(IXPConn *c, Fcall *fcall) if((fcall->count = strlen(def.font))) memcpy(p, def.font, fcall->count); break; - case FsFcapacity: - if(!i2) - return Enofile; - snprintf(buf, sizeof(buf), "%u", view[i1]->area[i2]->capacity); - fcall->count = strlen(buf); - memcpy(p, buf, fcall->count); - break; case FsFmode: if(!i2) return Enofile; @@ -1219,12 +1195,16 @@ 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]); 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; @@ -1343,35 +1323,6 @@ xwrite(IXPConn *c, Fcall *fcall) xfont = blitz_getfont(dpy, def.font); update_bar_geometry(); break; - case FsFcapacity: - if(!i2) - return Enofile; - if(fcall->count > sizeof(buf)) - return Ebadvalue; - memcpy(buf, fcall->data, fcall->count); - buf[fcall->count] = 0; - i = cext_strtonum(buf, 0, 0xffff, &err); - if(err) - return Ebadvalue; - view[i1]->area[i2]->capacity = i; - if(i) { - Area *a = view[i1]->area[i2]; - len = 0; - while(a->nframe > a->capacity) - pre_attach(a); - for(i = 1; i < view[i1]->narea; i++) - len += view[i1]->area[i]->nframe; - if(len > a->capacity) { - while(a->nframe < a->capacity) { - i = a->nframe; - post_detach(a); - if(i == a->nframe) - break; - } - } - arrange_area(a); - } - break; case FsFmode: if(!i2) return Enofile; diff --git a/cmd/wm/view.c b/cmd/wm/view.c @@ -234,7 +234,7 @@ detach_fromview(View *v, Client *c) Client *cl; for(i = 0; i < v->narea; i++) { if(clientofarea(v->area[i], c)) { - detach_fromarea(v->area[i], c, True); + detach_fromarea(v->area[i], c); XMoveWindow(dpy, c->framewin, 2 * rect.width, 0); } } diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -60,7 +60,6 @@ enum { FsFtags, FsFclass, FsFtag, - FsFcapacity, FsFmode }; @@ -92,7 +91,6 @@ struct Area { unsigned int framesz; unsigned int sel; unsigned int nframe; - unsigned int capacity; int mode; XRectangle rect; }; @@ -207,14 +205,13 @@ int aid2index(View *t, unsigned short id); void select_area(Area *a, char *arg); void send2area(Area *to, Area *from, Client *c); void attach_toarea(Area *a, Client *c); -void detach_fromarea(Area *a, Client *c, Bool postarrange); +void detach_fromarea(Area *a, Client *c); void arrange_area(Area *a); void resize_area(Client *c, XRectangle *r, XPoint *pt); int str2mode(char *arg); char *mode2str(int mode); Bool clientofarea(Area *a, Client *c); -void pre_attach(Area *a); -void post_detach(Area *a); +void restack_client(Client *c, char *arg); /* bar.c */ Label *get_label(char *name); diff --git a/rc/wmiirc b/rc/wmiirc @@ -127,9 +127,9 @@ do $MODKEY-Shift-l) xwrite /view/sel/sel/ctl sendto next;; $MODKEY-Shift-j) - xwrite /view/sel/sel/ctl sendto down;; + xwrite /view/sel/sel/ctl restack down;; $MODKEY-Shift-k) - xwrite /view/sel/sel/ctl sendto up;; + xwrite /view/sel/sel/ctl restack up;; $MODKEY-space) xwrite /view/ctl select toggle;; $MODKEY-Shift-space)