wmii

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

commit fe500a8cd26ec8502a2969676e784123c73ef57c
parent 11906f13b24efd03f1e07d59286421d4a39e1b31
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Thu, 13 Apr 2006 15:35:10 +0200

some more polishing


Diffstat:
cmd/wm/area.c | 6+++---
cmd/wm/bar.c | 6+++---
cmd/wm/client.c | 21++++++++++++++++-----
cmd/wm/frame.c | 10+++++-----
cmd/wm/fs.c | 18++++--------------
cmd/wm/rule.c | 6+++---
cmd/wm/view.c | 23+++++++++++++----------
cmd/wm/wm.h | 1+
libixp/ixp.h | 2+-
libixp/server.c | 10+++++-----
10 files changed, 54 insertions(+), 49 deletions(-)

diff --git a/cmd/wm/area.c b/cmd/wm/area.c @@ -9,7 +9,7 @@ #include "wm.h" static Vector * -area2vector(AreaVector *av) +vector_of_areas(AreaVector *av) { return (Vector *) av; } @@ -25,7 +25,7 @@ create_area(View *v) a->rect.height = rect.height - brect.height; if(v->area.size > 1) a->rect.width = rect.width / (v->area.size - 1); - cext_vattach(area2vector(&v->area), a); + cext_vattach(vector_of_areas(&v->area), a); v->sel = v->area.size -1; return a; } @@ -44,7 +44,7 @@ destroy_area(Area *a) for(i = 0; i < client.size; i++) if(client.data[i]->revert == a) client.data[i]->revert = 0; - cext_vdetach(area2vector(&v->area), a); + cext_vdetach(vector_of_areas(&v->area), a); if(v->sel > 1) v->sel--; free(a); diff --git a/cmd/wm/bar.c b/cmd/wm/bar.c @@ -29,7 +29,7 @@ comp_label_name(const void *l1, const void *l2) } static Vector * -label2vector(BarVector *lv) +vector_of_bars(BarVector *lv) { return (Vector *) lv; } @@ -48,7 +48,7 @@ create_bar(char *name, Bool intern) cext_strlcpy(l->name, name, sizeof(l->name)); cext_strlcpy(l->colstr, def.selcolor, sizeof(l->colstr)); l->color = def.sel; - cext_vattach(label2vector(&label), l); + cext_vattach(vector_of_bars(&label), l); qsort(label.data, label.size, sizeof(Bar *), comp_label_name); qsort(label.data, label.size, sizeof(Bar *), comp_label_intern); @@ -58,7 +58,7 @@ create_bar(char *name, Bool intern) void destroy_bar(Bar *l) { - cext_vdetach(label2vector(&label), l); + cext_vdetach(vector_of_bars(&label), l); } unsigned int diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -13,7 +13,7 @@ #define CLIENT_MASK (StructureNotifyMask | PropertyChangeMask) static Vector * -client2vector(ClientVector *cv) +vector_of_clients(ClientVector *cv) { return (Vector *) cv; } @@ -65,7 +65,7 @@ create_client(Window w, XWindowAttributes *wa) CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa); c->gc = XCreateGC(dpy, c->framewin, 0, 0); XSync(dpy, False); - cext_vattach(client2vector(&client), c); + cext_vattach(vector_of_clients(&client), c); return c; } @@ -349,7 +349,7 @@ manage_client(Client *c) apply_rules(c); reparent_client(c, c->framewin, c->rect.x, c->rect.y); - update_views(c); + update_views(); } static int @@ -379,8 +379,8 @@ destroy_client(Client *c) reparent_client(c, root, c->rect.x, c->rect.y); XFreeGC(dpy, c->gc); XDestroyWindow(dpy, c->framewin); - cext_vdetach(client2vector(&client), c); - update_views(nil); + cext_vdetach(vector_of_clients(&client), c); + update_views(); free(c); XSync(dpy, False); @@ -654,3 +654,14 @@ client_of_win(Window w) return client.data[i]; return nil; } + +void +draw_clients() +{ + unsigned int i, j; + for(i = 0; i < client.size; i++) + for(j = 0; j < client.data[i]->frame.size; j++) + if(client.data[i]->frame.data[j]->area->view == view.data[sel]) + draw_client(client.data[i]); +} + diff --git a/cmd/wm/frame.c b/cmd/wm/frame.c @@ -8,7 +8,7 @@ #include "wm.h" static Vector * -frame2vector(FrameVector *fv) +vector_of_frames(FrameVector *fv) { return (Vector *) fv; } @@ -25,9 +25,9 @@ create_frame(Area *a, Client *c) f->rect = c->rect; f->rect.width += 2 * def.border; f->rect.height += def.border + height_of_bar(); - cext_vattach(frame2vector(&c->frame), f); + cext_vattach(vector_of_frames(&c->frame), f); c->sel = c->frame.size - 1; - cext_vattach(frame2vector(&a->frame),f); + cext_vattach(vector_of_frames(&a->frame),f); a->sel = a->frame.size - 1; return f; @@ -39,8 +39,8 @@ destroy_frame(Frame *f) Client *c = f->client; Area *a = f->area; - cext_vdetach(frame2vector(&c->frame), f); - cext_vdetach(frame2vector(&a->frame), f); + cext_vdetach(vector_of_frames(&c->frame), f); + cext_vdetach(vector_of_frames(&a->frame), f); free(f); if(c->sel > 0) c->sel--; diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -571,7 +571,7 @@ xattach(IXPConn *c, Fcall *fcall) IXPMap *new = cext_emallocz(sizeof(IXPMap)); new->qid = root_qid; new->fid = fcall->fid; - cext_vattach(ixp_map2vector(&c->map), new); + cext_vattach(ixp_vector_of_maps(&c->map), new); fcall->id = RATTACH; fcall->qid = root_qid; ixp_server_respond_fcall(c, fcall); @@ -603,7 +603,7 @@ xwalk(IXPConn *c, Fcall *fcall) if(nwqid == fcall->nwname) { if(fcall->fid != fcall->newfid) { m = cext_emallocz(sizeof(IXPMap)); - cext_vattach(ixp_map2vector(&c->map), m); + cext_vattach(ixp_vector_of_maps(&c->map), m); } m->qid = dir; m->fid = fcall->newfid; @@ -674,7 +674,7 @@ xremove(IXPConn *c, Fcall *fcall) if(type != FsDbar) return Enoperm; /* clunk */ - cext_vdetach(ixp_map2vector(&c->map), m); + cext_vdetach(ixp_vector_of_maps(&c->map), m); free(m); switch(type) { case FsDbar: @@ -1131,16 +1131,6 @@ xstat(IXPConn *c, Fcall *fcall) return nil; } -static void -draw_clients() -{ - unsigned int i, j; - for(i = 0; i < client.size; i++) - for(j = 0; j < client.data[i]->frame.size; j++) - if(client.data[i]->frame.data[j]->area->view == view.data[sel]) - draw_client(client.data[i]); -} - static char * xwrite(IXPConn *c, Fcall *fcall) { @@ -1377,7 +1367,7 @@ xclunk(IXPConn *c, Fcall *fcall) update_keys(); else if(type == FsFrules) update_rules(); - cext_vdetach(ixp_map2vector(&c->map), m); + cext_vdetach(ixp_vector_of_maps(&c->map), m); free(m); fcall->id = RCLUNK; ixp_server_respond_fcall(c, fcall); diff --git a/cmd/wm/rule.c b/cmd/wm/rule.c @@ -33,7 +33,7 @@ VECTOR(RuleVector, Rule *); static RuleVector rule; static Vector * -rule2vector(RuleVector *rv) +vector_of_rules(RuleVector *rv) { return (Vector *) rv; } @@ -72,7 +72,7 @@ update_rules() Rule *r = rule.data[0]; if(r->is_valid) regfree(&r->regex); - cext_vdetach(rule2vector(&rule), r); + cext_vdetach(vector_of_rules(&rule), r); free(r); } @@ -106,7 +106,7 @@ update_rules() Rule *rul = cext_emallocz(sizeof(Rule)); rul->is_valid = !regcomp(&rul->regex, regex, 0); cext_strlcpy(rul->tags, tags, sizeof(rul->tags)); - cext_vattach(rule2vector(&rule), rul); + cext_vattach(vector_of_rules(&rule), rul); } else fprintf(stderr, "wmiiwm: ignoring rule with tags '%s', restricted tag name\n", diff --git a/cmd/wm/view.c b/cmd/wm/view.c @@ -9,7 +9,7 @@ #include "wm.h" static Vector * -view2vector(ViewVector *vv) +vector_of_views(ViewVector *vv) { return (Vector *) vv; } @@ -25,7 +25,7 @@ create_view(char *name) create_area(v); create_area(v); sel = view.size; - cext_vattach(view2vector(&view), v); + cext_vattach(vector_of_views(&view), v); return v; } @@ -36,7 +36,7 @@ destroy_view(View *v) while(v->area.size) destroy_area(v->area.data[0]); - cext_vdetach(view2vector(&view), v); + cext_vdetach(vector_of_views(&view), v); if(sel >= view.size) sel = 0; @@ -304,12 +304,12 @@ update_client_views(Client *c) n = cext_tokenize(toks, 16, buf, '+'); while(c->view.size) - cext_vdetach(view2vector(&c->view), c->view.data[0]); + cext_vdetach(vector_of_views(&c->view), c->view.data[0]); for(i = 0; i < n; i++) { if(!strncmp(toks[i], "*", 2)) continue; - cext_vattach(view2vector(&c->view), get_view(toks[i])); + cext_vattach(vector_of_views(&c->view), get_view(toks[i])); } } @@ -364,10 +364,13 @@ update_views() destroy_view(v); } - if(old) - focus_view(old); - else if(view.size) + if(view.size && view.data[sel] != old) { focus_view(view.data[sel]); - else - update_view_bars(); + return; + } + else if(old) { + focus_client(sel_client_of_view(old)); + draw_clients(); + } + update_view_bars(); } diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -227,6 +227,7 @@ void swap_client(Client *c, char *arg); Client *sel_client(); int idx_of_client_id(unsigned short id); Client *client_of_win(Window w); +void draw_clients(); /* column.c */ void arrange_column(Area *a, Bool dirty); diff --git a/libixp/ixp.h b/libixp/ixp.h @@ -245,7 +245,7 @@ unsigned int ixp_server_receive_fcall(IXPConn *c, Fcall *fcall); int ixp_server_respond_fcall(IXPConn *c, Fcall *fcall); int ixp_server_respond_error(IXPConn *c, Fcall *fcall, char *errstr); void ixp_server_close(IXPServer *s); -Vector *ixp_map2vector(MapVector *mv); +Vector *ixp_vector_of_maps(MapVector *mv); /* socket.c */ int ixp_connect_sock(char *address); diff --git a/libixp/server.c b/libixp/server.c @@ -19,13 +19,13 @@ static unsigned char *msg[IXP_MAX_MSG]; static Vector * -conn2vector(ConnVector *cv) +vector_of_conns(ConnVector *cv) { return (Vector *) cv; } Vector * -ixp_map2vector(MapVector *mv) +ixp_vector_of_maps(MapVector *mv) { return (Vector *) mv; } @@ -38,7 +38,7 @@ IXPConn *ixp_server_open_conn(IXPServer *s, int fd, void (*read)(IXPConn *c), c->srv = s; c->read = read; c->close = close; - cext_vattach(conn2vector(&s->conn), c); + cext_vattach(vector_of_conns(&s->conn), c); return c; } @@ -46,10 +46,10 @@ void ixp_server_close_conn(IXPConn *c) { IXPServer *s = c->srv; - cext_vdetach(conn2vector(&s->conn), c); + cext_vdetach(vector_of_conns(&s->conn), c); while(c->map.size) { IXPMap *m = c->map.data[0]; - cext_vdetach(ixp_map2vector(&c->map), m); + cext_vdetach(ixp_vector_of_maps(&c->map), m); free(m); } shutdown(c->fd, SHUT_RDWR);