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:
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)