commit 61e4d38f66e82bbf5652a90f6edff06f69412889
parent b5c72baed6d135d3e70635f469623a11884bc4a2
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Mon, 19 Jun 2006 13:18:09 +0200
implemented horizontal selection
Diffstat:
2 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/cmd/wm/view.c b/cmd/wm/view.c
@@ -368,28 +368,50 @@ view_index(View *v) {
return buf;
}
+Client *
+client_of_message(char *message, unsigned int *next)
+{
+ unsigned int i, n;
+ Client *c;
+
+ if(!strncmp(message, "sel ", 4))
+ return sel_client();
+ if((1 != sscanf(message, "%d %n", &i, &n)))
+ return nil;
+ for(c=client; i && c; c=c->next, i--);
+ return c;
+}
+
+Frame *
+clientframe_of_view(View *v, Client *c)
+{
+ Frame *f;
+ for(f=c->frame; f; f=f->cnext)
+ if(f->area->view == v)
+ break;
+ return f;
+}
+
/* XXX: This will need cleanup too */
char *
message_view(View *v, char *message) {
- unsigned int i, n;
+ unsigned int n;
Frame *f;
Client *c;
static char Ebadvalue[] = "bad value";
if(!strncmp(message, "send ", 5)) {
message += 5;
- if(1 != sscanf(message, "%d %n", &i, &n))
- return Ebadvalue;
- for(c=client; i && c; c=c->next, i--);
- if(!c)
+ if(!(c = client_of_message(message, &n)))
return Ebadvalue;
- for(f=c->frame; f; f=f->cnext)
- if(f->area->view == v)
- break;
- if(!f)
+ if(!(f = clientframe_of_view(v, c)))
return Ebadvalue;
return send_client(f, &message[n]);
}
+ else if(!strncmp(message, "select ", 7)) {
+ message += 7;
+ select_area(v->sel, message);
+ }
return nil;
}
diff --git a/rc/wmiirc b/rc/wmiirc
@@ -163,15 +163,15 @@ do
$MODKEY-Return)
PATH="$OLD_PATH" xterm &;;
$MODKEY-Shift-$LEFT)
- xwrite /tag/sel/ctl send prev;;
+ xwrite /tag/sel/ctl send sel prev;;
$MODKEY-Shift-$RIGHT)
- xwrite /tag/sel/ctl send next;;
+ xwrite /tag/sel/ctl send sel next;;
$MODKEY-Shift-$DOWN)
- xwrite /tag/sel/ctl send down;;
+ xwrite /tag/sel/ctl send sel down;;
$MODKEY-Shift-$UP)
- xwrite /tag/sel/ctl send up;;
+ xwrite /tag/sel/ctl send sel up;;
$MODKEY-Shift-space)
- xwrite /tag/sel/ctl send toggle;;
+ xwrite /tag/sel/ctl send sel toggle;;
$MODKEY-Shift-c)
xwrite /client/sel/ctl kill;;
$MODKEY-Shift-t)