diff --git a/cmd/wm/area.c b/cmd/wm/area.c index de1d3c99..b8e52588 100644 --- a/cmd/wm/area.c +++ b/cmd/wm/area.c @@ -34,7 +34,7 @@ Area *alloc_area(Page *p, char *layout) a->layout = get_layout(layout); a->layout->init(a); cext_attach_item(&p->areas, a); - cext_attach_item(&areas, a); + cext_attach_item(areas, a); p->file[P_SEL_AREA]->content = a->file[A_PREFIX]->content; return a; } @@ -45,10 +45,10 @@ void destroy_area(Area *a) a->layout->deinit(a); while ((c = cext_stack_get_top_item(&a->clients))) { cext_detach_item(&a->clients, c); - cext_attach_item(&detached, c); + cext_attach_item(detached, c); } ixp_remove_file(ixps, a->file[A_PREFIX]); - cext_detach_item(&areas, a); + cext_detach_item(areas, a); free(a); } @@ -122,7 +122,7 @@ static void iter_after_write_area(void *item, void *aux) } static void handle_after_write_area(IXPServer *s, File *f) { - cext_list_iterate(&areas, f, iter_after_write_area); + cext_list_iterate(areas, f, iter_after_write_area); } diff --git a/cmd/wm/client.c b/cmd/wm/client.c index 025eb21d..0504bb79 100644 --- a/cmd/wm/client.c +++ b/cmd/wm/client.c @@ -25,7 +25,7 @@ Client *alloc_client(Window w) c->file[C_NAME] = wmii_create_ixpfile(ixps, buf, (char *)name.value); free(name.value); id++; - cext_attach_item(&clients, c); + cext_attach_item(clients, c); return c; } @@ -177,8 +177,8 @@ void handle_client_property(Client *c, XPropertyEvent *e) void destroy_client(Client * c) { - cext_detach_item(&detached, c); - cext_detach_item(&clients, c); + cext_detach_item(detached, c); + cext_detach_item(clients, c); ixp_remove_file(ixps, c->file[C_PREFIX]); free(c); } @@ -294,7 +294,7 @@ void gravitate(Client * c, unsigned int tabh, unsigned int bw, int invert) void attach_client(Client * c) { Area *a = 0; - if (!cext_sizeof_container(&pages)) + if (!cext_sizeof_container(pages)) alloc_page(); /* transient stuff */ a = get_sel_area(); diff --git a/cmd/wm/frame.c b/cmd/wm/frame.c index 8e4432f1..cd5ccf61 100644 --- a/cmd/wm/frame.c +++ b/cmd/wm/frame.c @@ -93,7 +93,7 @@ Frame *alloc_frame(XRectangle * r) XDefineCursor(dpy, f->win, f->cursor); f->gc = XCreateGC(dpy, f->win, 0, 0); XSync(dpy, False); - cext_attach_item(&frames, f); + cext_attach_item(frames, f); return f; } @@ -107,12 +107,12 @@ static int comp_frame_win(void *pattern, void *frame) Frame *win_to_frame(Window w) { - return cext_find_item(&frames, &w, comp_frame_win); + return cext_find_item(frames, &w, comp_frame_win); } void destroy_frame(Frame * f) { - cext_detach_item(&frames, f); + cext_detach_item(frames, f); XFreeGC(dpy, f->gc); XDestroyWindow(dpy, f->win); ixp_remove_file(ixps, f->file[F_PREFIX]); @@ -318,7 +318,7 @@ void detach_client_from_frame(Client *c, Bool unmap) cext_detach_item(&f->clients, c); if (!c->destroyed) { if (!unmap) { - cext_attach_item(&detached, c); + cext_attach_item(detached, c); hide_client(c); } c->rect.x = f->rect.x; @@ -365,7 +365,7 @@ static void iter_before_read_frame(void *item, void *aux) static void handle_before_read_frame(IXPServer *s, File *f) { - cext_list_iterate(&frames, f, iter_before_read_frame); + cext_list_iterate(frames, f, iter_before_read_frame); } static void iter_after_write_frame(void *item, void *aux) @@ -391,7 +391,7 @@ static void iter_after_write_frame(void *item, void *aux) static void handle_after_write_frame(IXPServer * s, File * f) { - cext_list_iterate(&frames, f, iter_after_write_frame); + cext_list_iterate(frames, f, iter_after_write_frame); } Frame *get_sel_frame_of_area(Area *a) diff --git a/cmd/wm/layout.c b/cmd/wm/layout.c index 7b137e21..e236d3b8 100644 --- a/cmd/wm/layout.c +++ b/cmd/wm/layout.c @@ -17,5 +17,5 @@ static int comp_layout_name(void *name, void *layout) Layout *get_layout(char *name) { - return cext_find_item(&layouts, name, comp_layout_name); + return cext_find_item(layouts, name, comp_layout_name); } diff --git a/cmd/wm/layout_column.c b/cmd/wm/layout_column.c index cf746f98..749f42c8 100644 --- a/cmd/wm/layout_column.c +++ b/cmd/wm/layout_column.c @@ -49,7 +49,7 @@ static Layout lcol = { "col", init_col, deinit_col, arrange_col, attach_col, det void init_layout_column() { - cext_attach_item(&layouts, &lcol); + cext_attach_item(layouts, &lcol); } static Column *get_sel_column(Acme *acme) diff --git a/cmd/wm/layout_float.c b/cmd/wm/layout_float.c index 19ea9d17..5df6f70c 100644 --- a/cmd/wm/layout_float.c +++ b/cmd/wm/layout_float.c @@ -32,7 +32,7 @@ static Layout lfloat = { "float", init_float, deinit_float, arrange_float, attac void init_layout_float() { - cext_attach_item(&layouts, &lfloat); + cext_attach_item(layouts, &lfloat); } static void arrange_float(Area *a) diff --git a/cmd/wm/page.c b/cmd/wm/page.c index 769e1a83..f676b855 100644 --- a/cmd/wm/page.c +++ b/cmd/wm/page.c @@ -23,7 +23,7 @@ Page *alloc_page() { Page *p = cext_emallocz(sizeof(Page)); char buf[MAX_BUF], buf2[16]; - size_t id = cext_sizeof_container(&pages); + size_t id = cext_sizeof_container(pages); snprintf(buf2, sizeof(buf2), "%d", id); p->areas.list = p->areas.stack = 0; @@ -41,7 +41,7 @@ Page *alloc_page() p->file[P_CTL]->after_write = handle_after_write_page; alloc_area(p, "float"); alloc_area(p, def[WM_LAYOUT]->content); - cext_attach_item(&pages, p); + cext_attach_item(pages, p); def[WM_SEL_PAGE]->content = p->file[P_PREFIX]->content; invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); return p; @@ -57,7 +57,7 @@ void destroy_page(Page * p) cext_list_iterate(&p->areas, nil, iter_destroy_area); def[WM_SEL_PAGE]->content = 0; ixp_remove_file(ixps, p->file[P_PREFIX]); - cext_detach_item(&pages, p); + cext_detach_item(pages, p); free(p); if ((p = get_sel_page())) sel_page(p); @@ -72,7 +72,7 @@ void sel_page(Page * p) return; if (p != sel) { hide_page(sel); - cext_stack_top_item(&pages, p); + cext_stack_top_item(pages, p); show_page(p); } def[WM_SEL_PAGE]->content = p->file[P_PREFIX]->content; @@ -142,12 +142,12 @@ static void iter_after_write_page(void *item, void *aux) static void handle_after_write_page(IXPServer *s, File *f) { - cext_list_iterate(&pages, f, iter_after_write_page); + cext_list_iterate(pages, f, iter_after_write_page); } Page *get_sel_page() { - return cext_stack_get_top_item(&pages); + return cext_stack_get_top_item(pages); } static void select_area(void *obj, char *arg) diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c index 5f38bb15..24982d1a 100644 --- a/cmd/wm/wm.c +++ b/cmd/wm/wm.c @@ -142,7 +142,7 @@ static void draw_pager_page(Page *p, Draw *d) { char name[4]; initial_rect = d->rect; - if (p == cext_stack_get_top_item(&pages)) { + if (p == cext_stack_get_top_item(pages)) { d->bg = blitz_loadcolor(dpy, screen_num, def[WM_SEL_BG_COLOR]->content); d->fg = blitz_loadcolor(dpy, screen_num, def[WM_SEL_FG_COLOR]->content); d->border = blitz_loadcolor(dpy, screen_num, def[WM_SEL_BORDER_COLOR]->content); @@ -151,7 +151,7 @@ static void draw_pager_page(Page *p, Draw *d) d->fg = blitz_loadcolor(dpy, screen_num, def[WM_NORM_FG_COLOR]->content); d->border = blitz_loadcolor(dpy, screen_num, def[WM_NORM_BORDER_COLOR]->content); } - snprintf(name, sizeof(name), "%d", cext_list_get_item_index(&pages, p)); + snprintf(name, sizeof(name), "%d", cext_list_get_item_index(pages, p)); d->data = name; blitz_drawlabel(dpy, d); XSync(dpy, False); @@ -166,7 +166,7 @@ static void draw_pager() int dx; Page *p; - blitz_getbasegeometry(&pages, &size, &cols, &rows); + blitz_getbasegeometry(pages, &size, &cols, &rows); dx = (cols - 1) * GAP; /* GAPpx space */ tw = (rect.width - dx) / cols; th = ((double) tw / rect.width) * rect.height; @@ -182,7 +182,7 @@ static void draw_pager() else d.rect.y = ir * (rect.height - th) / (rows - 1); d.rect.height = th; - if (!(p = cext_list_get_item(&pages, i))) + if (!(p = cext_list_get_item(pages, i))) return; draw_pager_page(p, &d); i++; @@ -198,9 +198,9 @@ static Page *xy_to_pager_page(int x, int y) XRectangle r; Page *p; - if (!cext_sizeof_container(&pages)) + if (!cext_sizeof_container(pages)) return nil; - blitz_getbasegeometry(&pages, &size, &cols, &rows); + blitz_getbasegeometry(pages, &size, &cols, &rows); dx = (cols - 1) * GAP; /* GAPpx space */ tw = (rect.width - dx) / cols; th = ((double) tw / rect.width) * rect.height; @@ -214,7 +214,7 @@ static Page *xy_to_pager_page(int x, int y) else r.y = ir * (rect.height - th) / (rows - 1); r.height = th; - if (!(p = cext_list_get_item(&pages, i))) + if (!(p = cext_list_get_item(pages, i))) return nil; if (blitz_ispointinrect(x, y, &r)) return p; @@ -241,7 +241,7 @@ static void pager(void *obj, char *arg) XEvent ev; int i; - if (!cext_sizeof_container(&pages)) + if (!cext_sizeof_container(pages)) return; XClearWindow(dpy, transient); @@ -265,8 +265,8 @@ static void pager(void *obj, char *arg) case KeyPress: XUnmapWindow(dpy, transient); if ((i = handle_kpress(&ev.xkey)) != -1) - if (i < cext_sizeof_container(&pages)) - sel_page(cext_list_get_item(&pages, i)); + if (i < cext_sizeof_container(pages)) + sel_page(cext_list_get_item(pages, i)); XUngrabKeyboard(dpy, CurrentTime); XUngrabPointer(dpy, CurrentTime /* ev.xbutton.time */ ); return; @@ -291,9 +291,9 @@ static void draw_detached_clients() unsigned int i, ic, ir, tw, th, rows, cols, size; int dx, dy; - if (!cext_sizeof_container(&detached)) + if (!cext_sizeof_container(detached)) return; - blitz_getbasegeometry(&detached, &size, &cols, &rows); + blitz_getbasegeometry(detached, &size, &cols, &rows); dx = (cols - 1) * GAP; /* GAPpx space */ dy = (rows - 1) * GAP; /* GAPpx space */ tw = (rect.width - dx) / cols; @@ -304,7 +304,7 @@ static void draw_detached_clients() i = 0; for (ir = 0; ir < rows; ir++) { for (ic = 0; ic < cols; ic++) { - Client *c = cext_list_get_item(&detached, i++); + Client *c = cext_list_get_item(detached, i++); XRectangle cr; if (!c) return; @@ -335,7 +335,7 @@ static void detached_clients(void *obj, char *arg) { XEvent ev; int i, n; - size_t size = cext_sizeof_container(&detached); + size_t size = cext_sizeof_container(detached); Client *c; if (!size) @@ -357,15 +357,15 @@ static void detached_clients(void *obj, char *arg) XUnmapWindow(dpy, transient); if ((n = handle_kpress(&ev.xkey)) != -1) { for (i = 0; i < size; i++) - hide_client(cext_list_get_item(&detached, i)); + hide_client(cext_list_get_item(detached, i)); if (n - 1 < i) { - c = cext_list_get_item(&detached, n); - cext_detach_item(&detached, c); + c = cext_list_get_item(detached, n); + cext_detach_item(detached, c); attach_client(c); } } else { for (i = 0; i < size; i++) - hide_client(cext_list_get_item(&detached, i)); + hide_client(cext_list_get_item(detached, i)); } XUngrabKeyboard(dpy, CurrentTime); return; @@ -374,9 +374,9 @@ static void detached_clients(void *obj, char *arg) if (ev.xbutton.button == Button1) { XUnmapWindow(dpy, transient); for (i = 0; i < size; i++) - hide_client(cext_list_get_item(&detached, i)); + hide_client(cext_list_get_item(detached, i)); if ((c = win_to_client(ev.xbutton.window))) { - cext_detach_item(&detached, c); + cext_detach_item(detached, c); attach_client(c); } } @@ -396,9 +396,9 @@ static void _close_client(void *obj, char *arg) static void _attach_client(void *obj, char *arg) { - if (cext_sizeof_container(&detached)) { - Client *c = cext_stack_get_top_item(&detached); - cext_detach_item(&detached, c); + if (cext_sizeof_container(detached)) { + Client *c = cext_stack_get_top_item(detached); + cext_detach_item(detached, c); attach_client(c); } } @@ -416,11 +416,11 @@ static void _select_page(void *obj, char *arg) if (!p || !arg) return; if (!strncmp(arg, "prev", 5)) - p = cext_list_get_prev_item(&pages, p); + p = cext_list_get_prev_item(pages, p); else if (!strncmp(arg, "next", 5)) - p = cext_list_get_next_item(&pages, p); + p = cext_list_get_next_item(pages, p); else - p = cext_list_get_item(&pages, blitz_strtonum(arg, 0, cext_sizeof_container(&pages) - 1)); + p = cext_list_get_item(pages, blitz_strtonum(arg, 0, cext_sizeof_container(pages) - 1)); sel_page(p); } @@ -449,7 +449,7 @@ static int comp_client_win(void *pattern, void *client) Client *win_to_client(Window w) { - return cext_find_item(&clients, &w, comp_client_win); + return cext_find_item(clients, &w, comp_client_win); } void scan_wins() @@ -576,7 +576,7 @@ void handle_after_write(IXPServer * s, File * f) if (geom && strrchr(geom, ',')) { area_rect = rect; blitz_strtorect(&rect, &area_rect, geom); - cext_list_iterate(&pages, nil, iter_update_page); + cext_list_iterate(pages, nil, iter_update_page); } } check_event(0); @@ -712,7 +712,7 @@ static void clean_client_up(void *item, void *aux) static void cleanup() { - cext_list_iterate(&clients, nil, clean_client_up); + cext_list_iterate(clients, nil, clean_client_up); XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); } @@ -782,12 +782,12 @@ int main(int argc, char *argv[]) } def[WM_CTL]->after_write = handle_after_write; - detached.list = detached.stack = 0; - pages.list = pages.stack = 0; - areas.list = areas.stack = 0; - frames.list = frames.stack = 0; - clients.list = clients.stack = 0; - layouts.list = layouts.stack = 0; + detached = cext_emallocz(sizeof(Container)); + pages = cext_emallocz(sizeof(Container)); + areas = cext_emallocz(sizeof(Container)); + frames = cext_emallocz(sizeof(Container)); + clients = cext_emallocz(sizeof(Container)); + layouts = cext_emallocz(sizeof(Container)); init_atoms(); init_cursors(); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h index 1a6fcdec..c5f7034b 100644 --- a/cmd/wm/wm.h +++ b/cmd/wm/wm.h @@ -164,12 +164,12 @@ Window root; Window transient; XRectangle rect; XRectangle area_rect; -Container detached; -Container pages; -Container areas; -Container frames; -Container clients; -Container layouts; +Container *detached; +Container *pages; +Container *areas; +Container *frames; +Container *clients; +Container *layouts; XFontStruct *font; XColor xorcolor; GC xorgc;