wmii

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

commit 94e169cc3e93516cc39ffedc07d5ad478b1aeb8c
parent e26989b9ae8d12ed6e1ba3970bc6c44a7f305bdd
Author: Denis Grelich <denisg@suckless.org>
Date:   Mon, 22 Jan 2007 12:00:12 +0100

applied Daniel Waeber's x11-window-id patch: clients are now addressed by their x11 window id instead of a plain number given by wmii. Thanks Daniel!

Diffstat:
client.c | 20++++----------------
event.c | 2+-
fs.c | 15+++++++--------
view.c | 10+++++-----
wmii.h | 2--
5 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/client.c b/client.c @@ -17,14 +17,6 @@ sel_client() { return screen->sel && screen->sel->sel->sel ? screen->sel->sel->sel->client : NULL; } -int -idx_of_client(Client *c) { - Client *cl; - int i = 0; - for(cl=client; cl && cl != c; cl=cl->next, i++); - return cl ? i : -1; -} - Client * client_of_win(Window w) { Client *c; @@ -81,10 +73,7 @@ create_client(Window w, XWindowAttributes *wa) { Client **t, *c = (Client *) ixp_emallocz(sizeof(Client)); XSetWindowAttributes fwa; long msize; - unsigned int i; - static unsigned int id = 1; - c->id = id++; c->win = w; c->rect.x = wa->x; c->rect.y = wa->y; @@ -117,10 +106,10 @@ create_client(Window w, XWindowAttributes *wa) { CWOverrideRedirect | CWBackPixmap | CWEventMask, &fwa); c->gc = XCreateGC(blz.dpy, c->framewin, 0, 0); XSync(blz.dpy, False); - for(t=&client, i=0; *t; t=&(*t)->next, i++); + for(t=&client; *t; t=&(*t)->next); c->next = *t; /* *t == NULL */ *t = c; - write_event("CreateClient %d\n", i); + write_event("CreateClient %d\n", c->win); return c; } @@ -180,7 +169,7 @@ focus_client(Client *c, Bool restack) { if(a_i) write_event("ColumnFocus %d\n", a_i); else write_event("FocusFloating\n"); } - write_event("ClientFocus %d\n", idx_of_client(c)); + write_event("ClientFocus %d\n", c->win); } void @@ -375,7 +364,6 @@ void destroy_client(Client *c) { char *dummy = NULL; Client **tc; - uint i = idx_of_client(c); XGrabServer(blz.dpy); XSetErrorHandler(dummy_error_handler); @@ -397,7 +385,7 @@ destroy_client(Client *c) { XSetErrorHandler(wmii_error_handler); XUngrabServer(blz.dpy); flush_masked_events(EnterWindowMask); - write_event("DestroyClient %d\n", i); + write_event("DestroyClient %d\n", c->win); } void diff --git a/event.c b/event.c @@ -74,7 +74,7 @@ buttonrelease(XEvent *e) { } } else if((f = frame_of_win(ev->window))) - write_event("ClientClick %d %d\n", idx_of_client(f->client), ev->button); + write_event("ClientClick %d %d\n", f->client->win, ev->button); } static void diff --git a/fs.c b/fs.c @@ -366,7 +366,7 @@ lookup_file(FileId *parent, char *name) Client *c; View *v; Bar *b; - unsigned int i, id; + unsigned int id; if(!(parent->tab.perm & P9DMDIR)) return NULL; @@ -384,8 +384,8 @@ lookup_file(FileId *parent, char *name) *last = file; last = &file->next; file->content.client = c; - file->id = c->id; - file->index = idx_of_client(c); + file->id = c->win; + file->index = c->win; file->tab = *dir; file->tab.name = ixp_estrdup("sel"); }if(name) goto LastItem; @@ -394,17 +394,16 @@ lookup_file(FileId *parent, char *name) id = (unsigned int)strtol(name, &name, 10); if(*name) goto NextItem; } - i=0; - for(c=client; c; c=c->next, i++) { - if(!name || i == id) { + for(c=client; c; c=c->next) { + if(!name || c->win == id) { file = get_file(); *last = file; last = &file->next; file->content.client = c; - file->id = c->id; + file->id = c->win; file->tab = *dir; file->tab.name = ixp_emallocz(16); - snprintf(file->tab.name, 16, "%d", i); + snprintf(file->tab.name, 16, "%d", c->win); if(name) goto LastItem; } } diff --git a/view.c b/view.c @@ -287,12 +287,12 @@ view_index(View *v) { XRectangle *r = &f->rect; if(a->floating) n = snprintf(&buffer[buf_i], len, "~ %d %d %d %d %d %s\n", - idx_of_client(f->client), + f->client->win, r->x, r->y, r->width, r->height, f->client->props); else n = snprintf(&buffer[buf_i], len, "%d %d %d %d %s\n", - a_i, idx_of_client(f->client), r->y, + a_i, f->client->win, r->y, r->height, f->client->props); if(len - n < 0) return (unsigned char *)buffer; @@ -305,16 +305,16 @@ view_index(View *v) { Client * client_of_message(View *v, char *message, unsigned int *next) { - unsigned int i; + unsigned int id; Client *c; if(!strncmp(message, "sel ", 4)) { *next = 4; return sel_client_of_view(v); } - if((1 != sscanf(message, "%d %n", &i, next))) + if((1 != sscanf(message, "%d %n", &id, next))) return NULL; - for(c=client; i && c; c=c->next, i--); + for(c=client; c && c->win!=id; c=c->next); return c; } diff --git a/wmii.h b/wmii.h @@ -135,7 +135,6 @@ struct Client { char name[256]; char tags[256]; char props[512]; - unsigned short id; unsigned int border; int proto; Bool floating; @@ -280,7 +279,6 @@ extern void newcol_client(Client *c, char *arg); extern Client *sel_client(); extern Frame *frame_of_win(Window w); extern Client *client_of_win(Window w); -extern int idx_of_client(Client *c); extern void update_client_grab(Client *c, Bool is_sel); extern void apply_rules(Client *c); extern void apply_tags(Client *c, const char *tags);