wmii

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

commit ad9d50b3a8f90b4fae34ca8a4f40667b0c7b7d9f
parent 23a10f4541a8cc820f2fad636b8415cd40857cea
Author: Kris Maglione <bsdaemon@wmii.de>
Date:   Wed, 28 Jun 2006 02:20:17 -0400

Restore frame_of_win; remove wmiiwm's -c option


Diffstat:
cmd/wm/client.c | 15++++++++++++---
cmd/wm/event.c | 56++++++++++++++++++++++++++++----------------------------
cmd/wm/wm.c | 13++-----------
cmd/wm/wm.h | 1+
4 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -37,6 +37,14 @@ client_of_win(Window w) return c; } +Frame * +frame_of_win(Window w) +{ + Client *c; + for(c=client; c && c->framewin != w; c=c->next); + return c ? c->frame : nil; +} + static void update_client_name(Client *c) { @@ -735,8 +743,8 @@ compare_tags(const void *a, const void *b) { void apply_tags(Client *c, const char *tags) { - unsigned int i, j = 0, n; - int len = sizeof(c->tags); + unsigned int i, j, n; + int len; char buf[256]; char *toks[32]; @@ -744,7 +752,7 @@ apply_tags(Client *c, const char *tags) if(!(n = cext_tokenize(toks, 31, buf, '+'))) return; - for(i = 0; i < n; i++) { + for(i=0, j=0; i < n; i++) { if(!strncmp(toks[i], "~", 2)) c->floating = True; else if(!strncmp(toks[i], "!", 2)) @@ -756,6 +764,7 @@ apply_tags(Client *c, const char *tags) c->tags[0] = '\0'; qsort(toks, j, sizeof(char *), compare_tags); + len = sizeof(c->tags); if(!j) toks[j++] = "nil"; for(i=0, n=0; i < j && len > 1; i++) if(!n || strcmp(toks[i], toks[n-1])) { diff --git a/cmd/wm/event.c b/cmd/wm/event.c @@ -66,7 +66,7 @@ static Bool drag = False; static void handle_buttonrelease(XEvent *e) { - Client *c; + Frame *f; Bar *b; XButtonPressedEvent *ev = &e->xbutton; if(ev->window == barwin) { @@ -79,12 +79,12 @@ handle_buttonrelease(XEvent *e) return write_event("RightBarClick %d %s\n", ev->button, b->name); } - else if((c = client_of_win(ev->window)) && c->frame) { - if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) { - c->sel->tagbar.curend = blitz_charof(&c->sel->tagbar, ev->x, ev->y); - draw_frame(c->sel); + else if((f = frame_of_win(ev->window))) { + if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) { + f->tagbar.curend = blitz_charof(&f->tagbar, ev->x, ev->y); + draw_frame(f); } - write_event("ClientClick %d %d\n", idx_of_client(c), ev->button); + write_event("ClientClick %d %d\n", idx_of_client(f->client), ev->button); drag = False; } } @@ -92,21 +92,21 @@ handle_buttonrelease(XEvent *e) static void handle_motionnotify(XEvent *e) { - Client *c; + Frame *f; XMotionEvent *ev = &e->xmotion; if(!drag) return; - if((c = client_of_win(ev->window))) { - if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) { - c->sel->tagbar.curend = blitz_charof(&c->sel->tagbar, ev->x, ev->y); - if(c->sel->tagbar.curend < c->sel->tagbar.curstart) { - char *tmp = c->sel->tagbar.curend; - c->sel->tagbar.curend = c->sel->tagbar.curstart; - c->sel->tagbar.curstart = tmp; + if((f = frame_of_win(ev->window))) { + if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) { + f->tagbar.curend = blitz_charof(&f->tagbar, ev->x, ev->y); + if(f->tagbar.curend < f->tagbar.curstart) { + char *tmp = f->tagbar.curend; + f->tagbar.curend = f->tagbar.curstart; + f->tagbar.curstart = tmp; } - draw_frame(c->sel); + draw_frame(f); } } } @@ -114,31 +114,31 @@ handle_motionnotify(XEvent *e) static void handle_buttonpress(XEvent *e) { - Client *c; + Frame *f; XButtonPressedEvent *ev = &e->xbutton; - if((c = client_of_win(ev->window))) { + if((f = frame_of_win(ev->window))) { ev->state &= valid_mask; - if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) { - c->sel->tagbar.curstart = c->sel->tagbar.curend - = blitz_charof(&c->sel->tagbar, ev->x, ev->y); - draw_frame(c->sel); + if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) { + f->tagbar.curstart = f->tagbar.curend + = blitz_charof(&f->tagbar, ev->x, ev->y); + draw_frame(f); drag = True; } if((ev->state & def.mod) == def.mod) { - focus(c, True); + focus(f->client, True); switch(ev->button) { case Button1: - do_mouse_resize(c, CENTER); + do_mouse_resize(f->client, CENTER); break; case Button3: - do_mouse_resize(c, quadofcoord(&c->rect, ev->x, ev->y)); + do_mouse_resize(f->client, quadofcoord(&f->client->rect, ev->x, ev->y)); default: break; } } else if(ev->button == Button1) - focus(c, True); + focus(f->client, True); } } @@ -266,12 +266,12 @@ static void handle_expose(XEvent *e) { XExposeEvent *ev = &e->xexpose; - static Client *c; + static Frame *f; if(ev->count == 0) { if(ev->window == barwin) draw_bar(); - else if((c = client_of_win(ev->window))) - draw_frame(c->sel); + else if((f = frame_of_win(ev->window))) + draw_frame(f); } } diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -27,7 +27,7 @@ static char version[] = "wmiiwm - " VERSION ", (C)opyright MMIV-MMVI Anselm R. G static void usage() { - fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-c] [-v]\n", stderr); + fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-v]\n", stderr); exit(1); } @@ -226,7 +226,6 @@ int main(int argc, char *argv[]) { int i, j; - int checkwm = 0; char *address = nil, *wmiirc = nil, *namespace, *errstr; struct passwd *passwd; XSetWindowAttributes wa; @@ -238,9 +237,6 @@ main(int argc, char *argv[]) fprintf(stdout, "%s", version); exit(0); break; - case 'c': - checkwm = 1; - break; case 'a': if(i + 1 < argc) address = argv[++i]; @@ -276,11 +272,7 @@ main(int argc, char *argv[]) if(other_wm_running) error("wmiiwm: another window manager is already running\n"); - if(checkwm) { - XCloseDisplay(blz.display); - exit(0); - } - /* above -c is checked */ + if(!address) usage(); @@ -414,7 +406,6 @@ main(int argc, char *argv[]) if(errstr) fprintf(stderr, "wmii: fatal: %s\n", errstr); - free(user); /* shut up leak detector */ ixp_server_close(&srv); cleanup(); XCloseDisplay(blz.display); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -239,6 +239,7 @@ void move_client(Client *c, char *arg); void size_client(Client *c, char *arg); void newcol_client(Client *c, char *arg); Client *sel_client(); +Frame *frame_of_win(Window w); Client *client_of_win(Window w); int idx_of_client(Client *c); void update_client_grab(Client *c, Bool is_sel);