wmii

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

commit 98fd32f255116c6b6be936071e83021d17ab6535
parent fb790fbac505bc681c06a64d0246e312b185fcea
Author: garbeam <garbeam@localhost.localdomain>
Date:   Mon,  5 Dec 2005 03:50:02 +0200

several changes to sanitize /wm fs


Diffstat:
cmd/wm/area.c | 28++++++++++++++--------------
cmd/wm/client.c | 38+++++++++++++++++++-------------------
cmd/wm/event.c | 14+++++++-------
cmd/wm/frame.c | 184++++++++++++++++++++++++++++++++-----------------------------------------------
cmd/wm/layout_column.c | 120++++++++++++++++++++++++++++++++++++++++----------------------------------------
cmd/wm/mouse.c | 28++++++++++------------------
cmd/wm/page.c | 77++++++++++++++++++++++++++++++++++++++---------------------------------------
cmd/wm/wm.c | 178++++++++++++++++++++++++++++++++++++++++----------------------------------------
cmd/wm/wm.h | 18+++++++++---------
config.mk | 3++-
10 files changed, 323 insertions(+), 365 deletions(-)

diff --git a/cmd/wm/area.c b/cmd/wm/area.c @@ -21,19 +21,19 @@ Area *alloc_area(Page *p, XRectangle * r) *a = zero_area; a->rect = *r; a->page = p; - snprintf(buf, MAX_BUF, "/%s/area/%d", p->files[P_PREFIX]->name, count_items((void **) p->areas)); + snprintf(buf, MAX_BUF, "/%s/area/%d", p->files[P_PREFIX]->name, count_items((void **) p->area)); a->files[A_PREFIX] = ixp_create(ixps, buf); - snprintf(buf, MAX_BUF, "/%s/area/%d/frame/sel", p->files[P_PREFIX]->name, count_items((void **) p->areas)); + snprintf(buf, MAX_BUF, "/%s/area/%d/frame/sel", p->files[P_PREFIX]->name, count_items((void **) p->area)); a->files[A_SEL_FRAME] = ixp_create(ixps, buf); - snprintf(buf, MAX_BUF, "/%s/area/%d/ctl", p->files[P_PREFIX]->name, count_items((void **) p->areas)); + snprintf(buf, MAX_BUF, "/%s/area/%d/ctl", p->files[P_PREFIX]->name, count_items((void **) p->area)); a->files[A_CTL] = ixp_create(ixps, buf); - snprintf(buf, MAX_BUF, "/%s/area/%d/geometry", p->files[P_PREFIX]->name, count_items((void **) p->areas)); + snprintf(buf, MAX_BUF, "/%s/area/%d/geometry", p->files[P_PREFIX]->name, count_items((void **) p->area)); a->files[A_GEOMETRY] = ixp_create(ixps, buf); - snprintf(buf, MAX_BUF, "/%s/area/%d/layout", p->files[P_PREFIX]->name, count_items((void **) p->areas)); + snprintf(buf, MAX_BUF, "/%s/area/%d/layout", p->files[P_PREFIX]->name, count_items((void **) p->area)); a->files[A_LAYOUT] = ixp_create(ixps, buf); - p->areas = - (Area **) attach_item_end((void **) p->areas, a, sizeof(Area *)); - p->sel = index_item((void **) p->areas, a); + p->area = + (Area **) attach_item_end((void **) p->area, a, sizeof(Area *)); + p->sel = index_item((void **) p->area, a); return a; } @@ -47,9 +47,9 @@ void destroy_area(Area * a) { unsigned int i; a->layout->deinit(a); - for (i = 0; a->frames && a->frames[i]; i++); - destroy_frame(a->frames[i]); - free(a->frames); + for (i = 0; a->frame && a->frame[i]; i++); + destroy_frame(a->frame[i]); + free(a->frame); free_area(a); } @@ -59,9 +59,9 @@ void focus_area(Area * a, int raise, int up, int down) if (!p) return; - if (down && a->frames) - focus_frame(a->frames[a->sel], raise, 0, down); - p->sel = index_item((void **) p->areas, a); + if (down && a->frame) + focus_frame(a->frame[a->sel], raise, 0, down); + p->sel = index_item((void **) p->area, a); p->files[P_SEL_AREA]->content = a->files[A_PREFIX]->content; if (up) focus_page(p, raise, 0); diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -41,8 +41,8 @@ Client *alloc_client(Window w) c->files[C_INSTANCE] = ixp_create(ixps, buf); } id++; - clients = - (Client **) attach_item_end((void **) clients, c, + client = + (Client **) attach_item_end((void **) client, c, sizeof(Client *)); XSelectInput(dpy, c->win, CLIENT_MASK); return c; @@ -54,14 +54,14 @@ void focus_client(Client * c, int raise, int up) /* focus client */ if (c) { f = c->frame; - for (f->sel = 0; f->clients && f->clients[f->sel] != c; f->sel++); + for (f->sel = 0; f->client && f->client[f->sel] != c; f->sel++); f->files[F_SEL_CLIENT]->content = c->files[C_PREFIX]->content; if (raise) XRaiseWindow(dpy, c->win); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); } else XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); - invoke_wm_event(defaults[WM_EVENT_CLIENT_UPDATE]); + invoke_wm_event(def[WM_EVENT_CLIENT_UPDATE]); if (up && f) focus_frame(f, raise, up, 0); } @@ -207,7 +207,7 @@ void handle_client_property(Client * c, XPropertyEvent * e) } if (c->frame) draw_client(c); - invoke_wm_event(defaults[WM_EVENT_CLIENT_UPDATE]); + invoke_wm_event(def[WM_EVENT_CLIENT_UPDATE]); break; case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &c->trans); @@ -223,8 +223,8 @@ void handle_client_property(Client * c, XPropertyEvent * e) void free_client(Client * c) { - clients = - (Client **) detach_item((void **) clients, c, sizeof(Client *)); + client = + (Client **) detach_item((void **) client, c, sizeof(Client *)); ixp_remove_file(ixps, c->files[C_PREFIX]); if (ixps->errstr) fprintf(stderr, "wmiiwm: free_client(): %s\n", ixps->errstr); @@ -241,42 +241,42 @@ void draw_client(Client * c) if (!tabh) return; - size = count_items((void **) f->clients); + size = count_items((void **) f->client); tw = f->rect.width; if (size) tw /= size; - for (i = 0; f->clients[i] && f->clients[i] != c; i++); + for (i = 0; f->client[i] && f->client[i] != c; i++); - if (!f->clients[i + 1]) + if (!f->client[i + 1]) draw_tab(f, c->files[C_NAME]->content, i * tw, 0, f->rect.width - (i * tw), tabh, ISSELFRAME(f) - && f->clients[f->sel] == c); + && f->client[f->sel] == c); else draw_tab(f, c->files[C_NAME]->content, i * tw, 0, tw, tabh, - ISSELFRAME(f) && f->clients[f->sel] == c); + ISSELFRAME(f) && f->client[f->sel] == c); } void draw_clients(Frame * f) { unsigned int tabh = tab_height(f); - int i, size = count_items((void **) f->clients); + int i, size = count_items((void **) f->client); int tw = f->rect.width; if (!tabh || !size) return; if (size) tw /= size; - for (i = 0; f->clients[i]; i++) { - if (!f->clients[i + 1]) { + for (i = 0; f->client[i]; i++) { + if (!f->client[i + 1]) { int xoff = i * tw; - draw_tab(f, f->clients[i]->files[C_NAME]->content, + draw_tab(f, f->client[i]->files[C_NAME]->content, xoff, 0, f->rect.width - xoff, tabh, ISSELFRAME(f) - && f->clients[f->sel] == f->clients[i]); + && f->client[f->sel] == f->client[i]); break; } else - draw_tab(f, f->clients[i]->files[C_NAME]->content, + draw_tab(f, f->client[i]->files[C_NAME]->content, i * tw, 0, tw, tabh, ISSELFRAME(f) - && f->clients[f->sel] == f->clients[i]); + && f->client[f->sel] == f->client[i]); } XSync(dpy, False); } diff --git a/cmd/wm/event.c b/cmd/wm/event.c @@ -215,7 +215,7 @@ static void handle_maprequest(XEvent * e) return; if (wa.override_redirect) return; - /* there're clients which send map requests twice */ + /* there're client which send map requests twice */ c = win_to_client(ev->window); if (!c) c = alloc_client(ev->window); @@ -230,14 +230,14 @@ static void handle_motionnotify(XEvent * e) Frame *f = win_to_frame(e->xmotion.window); Cursor cursor; if (f) { - Frame *old = SELFRAME(pages[sel]); + Frame *old = SELFRAME(page[sel]); if (old != f) { focus_frame(f, 0, 0, 1); draw_frame(old); draw_frame(f); - } else if (f->clients) { + } else if (f->client) { /* multihead assumption */ - XSetInputFocus(dpy, f->clients[f->sel]->win, + XSetInputFocus(dpy, f->client[f->sel]->win, RevertToPointerRoot, CurrentTime); XSync(dpy, False); } @@ -271,8 +271,8 @@ static void handle_unmapnotify(XEvent * e) if ((c = win_to_client(ev->window))) { if (c->frame) { detach_client_from_frame(c, 1, 0); - if (pages) - draw_page(pages[sel]); + if (page) + draw_page(page[sel]); free_client(c); } else if (detached) { if (index_item((void **) detached, c) == -1) @@ -295,7 +295,7 @@ static void handle_enternotify(XEvent * e) c = win_to_client(ev->window); if (c && c->frame && (ev->serial != ignore_enternotify_hack)) { - Frame *old = SELFRAME(pages[sel]); + Frame *old = SELFRAME(page[sel]); XUndefineCursor(dpy, c->frame->win); if (old != c->frame) { focus_frame(c->frame, 0, 0, 1); diff --git a/cmd/wm/frame.c b/cmd/wm/frame.c @@ -51,58 +51,36 @@ Frame *alloc_frame(XRectangle * r, int add_frame_border, int floating) f->files[F_SIZE]->before_read = handle_before_read_frame; f->files[F_SIZE]->after_write = handle_after_write_frame; snprintf(buf, MAX_BUF, "/detached/frame/%d/border", id); - f->files[F_BORDER] = - wmii_create_ixpfile(ixps, buf, defaults[WM_BORDER]->content); + f->files[F_BORDER] = wmii_create_ixpfile(ixps, buf, def[WM_BORDER]->content); f->files[F_BORDER]->after_write = handle_after_write_frame; snprintf(buf, MAX_BUF, "/detached/frame/%d/tab", id); - f->files[F_TAB] = - wmii_create_ixpfile(ixps, buf, defaults[WM_TAB]->content); + f->files[F_TAB] = wmii_create_ixpfile(ixps, buf, def[WM_TAB]->content); f->files[F_TAB]->after_write = handle_after_write_frame; snprintf(buf, MAX_BUF, "/detached/frame/%d/handleinc", id); - f->files[F_HANDLE_INC] = - wmii_create_ixpfile(ixps, buf, defaults[WM_HANDLE_INC]->content); + f->files[F_HANDLE_INC] = wmii_create_ixpfile(ixps, buf, def[WM_HANDLE_INC]->content); f->files[F_HANDLE_INC]->after_write = handle_after_write_frame; snprintf(buf, MAX_BUF, "/detached/frame/%d/locked", id); - f->files[F_LOCKED] = - wmii_create_ixpfile(ixps, buf, defaults[WM_LOCKED]->content); + f->files[F_LOCKED] = wmii_create_ixpfile(ixps, buf, def[WM_LOCKED]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/selstyle/bgcolor", id); - f->files[F_SEL_BG_COLOR] = - wmii_create_ixpfile(ixps, buf, defaults[WM_SEL_BG_COLOR]->content); + f->files[F_SEL_BG_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_SEL_BG_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/selstyle/fgcolor", id); - f->files[F_SEL_FG_COLOR] = - wmii_create_ixpfile(ixps, buf, defaults[WM_SEL_FG_COLOR]->content); + f->files[F_SEL_FG_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_SEL_FG_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/selstyle/bordercolor", id); - f->files[F_SEL_BORDER_COLOR] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_SEL_BORDER_COLOR]->content); + f->files[F_SEL_BORDER_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_SEL_BORDER_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/normstyle/bgcolor", id); - f->files[F_NORM_BG_COLOR] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_NORM_BG_COLOR]->content); + f->files[F_NORM_BG_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_NORM_BG_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/normstyle/fgcolor", id); - f->files[F_NORM_FG_COLOR] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_NORM_FG_COLOR]->content); + f->files[F_NORM_FG_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_NORM_FG_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/normstyle/bordercolor", id); - f->files[F_NORM_BORDER_COLOR] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_NORM_BORDER_COLOR]->content); + f->files[F_NORM_BORDER_COLOR] = wmii_create_ixpfile(ixps, buf, def[WM_NORM_BORDER_COLOR]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/event/b2press", id); - f->files[F_EVENT_B2PRESS] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_EVENT_B2PRESS]->content); + f->files[F_EVENT_B2PRESS] = wmii_create_ixpfile(ixps, buf, def[WM_EVENT_B2PRESS]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/event/b3press", id); - f->files[F_EVENT_B3PRESS] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_EVENT_B3PRESS]->content); + f->files[F_EVENT_B3PRESS] = wmii_create_ixpfile(ixps, buf, def[WM_EVENT_B3PRESS]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/event/b4press", id); - f->files[F_EVENT_B4PRESS] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_EVENT_B4PRESS]->content); + f->files[F_EVENT_B4PRESS] = wmii_create_ixpfile(ixps, buf, def[WM_EVENT_B4PRESS]->content); snprintf(buf, MAX_BUF, "/detached/frame/%d/event/b5press", id); - f->files[F_EVENT_B5PRESS] = - wmii_create_ixpfile(ixps, buf, - defaults[WM_EVENT_B5PRESS]->content); + f->files[F_EVENT_B5PRESS] = wmii_create_ixpfile(ixps, buf, def[WM_EVENT_B5PRESS]->content); id++; wa.override_redirect = 1; @@ -127,17 +105,17 @@ Frame *alloc_frame(XRectangle * r, int add_frame_border, int floating) XDefineCursor(dpy, f->win, f->cursor); f->gc = XCreateGC(dpy, f->win, 0, 0); XSync(dpy, False); - frames = - (Frame **) attach_item_end((void **) frames, f, sizeof(Frame *)); + frame = + (Frame **) attach_item_end((void **) frame, f, sizeof(Frame *)); return f; } void focus_frame(Frame * f, int raise, int up, int down) { Area *a = f->area; - if (down && f->clients) - focus_client(f->clients[f->sel], raise, 0); - a->sel = index_item((void **) a->frames, f); + if (down && f->client) + focus_client(f->client[f->sel], raise, 0); + a->sel = index_item((void **) a->frame, f); a->files[A_SEL_FRAME]->content = f->files[F_PREFIX]->content; if (raise && a->page->sel == 0) /* only floating windows are raised */ XRaiseWindow(dpy, f->win); @@ -149,15 +127,15 @@ Frame *win_to_frame(Window w) { int i; - for (i = 0; frames && frames[i]; i++) - if (frames[i]->win == w) - return frames[i]; + for (i = 0; frame && frame[i]; i++) + if (frame[i]->win == w) + return frame[i]; return 0; } void destroy_frame(Frame * f) { - frames = (Frame **) detach_item((void **) frames, f, sizeof(Frame *)); + frame = (Frame **) detach_item((void **) frame, f, sizeof(Frame *)); XFreeGC(dpy, f->gc); XDestroyWindow(dpy, f->win); ixp_remove_file(ixps, f->files[F_PREFIX]); @@ -180,11 +158,11 @@ unsigned int border_width(Frame * f) return 0; } -static void resize_clients(Frame * f, int tabh, int bw) +static void resize_client(Frame * f, int tabh, int bw) { int i; - for (i = 0; f->clients && f->clients[i]; i++) { - Client *c = f->clients[i]; + for (i = 0; f->client && f->client[i]; i++) { + Client *c = f->client[i]; c->rect.x = bw; c->rect.y = tabh ? tabh : bw; c->rect.width = f->rect.width - 2 * bw; @@ -197,7 +175,7 @@ static void resize_clients(Frame * f, int tabh, int bw) static void check_dimensions(Frame * f, unsigned int tabh, unsigned int bw) { - Client *c = f->clients ? f->clients[f->sel] : 0; + Client *c = f->client ? f->client[f->sel] : 0; if (!c) return; @@ -222,7 +200,7 @@ static void check_dimensions(Frame * f, unsigned int tabh, unsigned int bw) static void resize_incremental(Frame * f, unsigned int tabh, unsigned int bw) { - Client *c = f->clients ? f->clients[f->sel] : 0; + Client *c = f->client ? f->client[f->sel] : 0; if (!c) return; /* increment stuff, see chapter 4.1.2.3 of the ICCCM Manual */ @@ -233,7 +211,7 @@ resize_incremental(Frame * f, unsigned int tabh, unsigned int bw) base_width = c->size.base_width; base_height = c->size.base_height; } else if (c->size.flags & PMinSize) { - /* base_{width,height} defaults to min_{width,height} */ + /* base_{width,height} default to min_{width,height} */ base_width = c->size.min_width; base_height = c->size.min_height; } @@ -270,7 +248,7 @@ resize_frame(Frame * f, XRectangle * r, XPoint * pt, int ignore_layout) XMoveResizeWindow(dpy, f->win, f->rect.x, f->rect.y, f->rect.width, f->rect.height); - resize_clients(f, (tabh ? tabh : bw), bw); + resize_client(f, (tabh ? tabh : bw), bw); } @@ -342,25 +320,13 @@ void draw_frame(Frame * f) /* define ground plate (i = 0) */ if (ISSELFRAME(f)) { - d.bg = - blitz_loadcolor(dpy, screen_num, - f->files[F_SEL_BG_COLOR]->content); - d.fg = - blitz_loadcolor(dpy, screen_num, - f->files[F_SEL_FG_COLOR]->content); - d.border = - blitz_loadcolor(dpy, screen_num, - f->files[F_SEL_BORDER_COLOR]->content); + d.bg = blitz_loadcolor(dpy, screen_num, f->files[F_SEL_BG_COLOR]->content); + d.fg = blitz_loadcolor(dpy, screen_num, f->files[F_SEL_FG_COLOR]->content); + d.border = blitz_loadcolor(dpy, screen_num, f->files[F_SEL_BORDER_COLOR]->content); } else { - d.bg = - blitz_loadcolor(dpy, screen_num, - f->files[F_NORM_BG_COLOR]->content); - d.fg = - blitz_loadcolor(dpy, screen_num, - f->files[F_NORM_FG_COLOR]->content); - d.border = - blitz_loadcolor(dpy, screen_num, - f->files[F_NORM_BORDER_COLOR]->content); + d.bg = blitz_loadcolor(dpy, screen_num, f->files[F_NORM_BG_COLOR]->content); + d.fg = blitz_loadcolor(dpy, screen_num, f->files[F_NORM_FG_COLOR]->content); + d.border = blitz_loadcolor(dpy, screen_num, f->files[F_NORM_BORDER_COLOR]->content); } d.rect = f->rect; d.rect.x = d.rect.y = 0; @@ -375,12 +341,12 @@ void draw_frame(Frame * f) void handle_frame_buttonpress(XButtonEvent * e, Frame * f) { int bindex; - int size = count_items((void **) f->clients); + int size = count_items((void **) f->client); int cindex = e->x / f->rect.width / size; if (!f->area->page->sel) XRaiseWindow(dpy, f->win); if (cindex != f->sel) { - focus_client(f->clients[cindex], 1, 0); + focus_client(f->client[cindex], 1, 0); draw_frame(f); return; } @@ -397,11 +363,11 @@ void handle_frame_buttonpress(XButtonEvent * e, Frame * f) void attach_client_to_frame(Frame * f, Client * c) { - int size = count_items((void **) f->clients); + int size = count_items((void **) f->client); wmii_move_ixpfile(c->files[C_PREFIX], f->files[F_CLIENT_PREFIX]); f->files[F_SEL_CLIENT]->content = c->files[C_PREFIX]->content; - f->clients = - (Client **) attach_item_end((void **) f->clients, c, + f->client = + (Client **) attach_item_end((void **) f->client, c, sizeof(Client *)); f->sel = size; c->frame = f; @@ -415,7 +381,7 @@ void attach_client(Client * c) { Page *p = 0; Frame *f = 0; - if (!pages) + if (!page) alloc_page("0"); /* transient stuff */ if (c && c->trans && !f) { @@ -425,7 +391,7 @@ void attach_client(Client * c) f = alloc_frame(&c->rect, 1, 1); } } - p = pages[sel]; + p = page[sel]; if (!f) { /* check if we shall manage it */ @@ -442,19 +408,19 @@ void attach_client(Client * c) f = alloc_frame(&c->rect, 1, 0); if (!f->area) - attach_frame_to_area(p->areas[p->sel], f); + attach_frame_to_area(p->area[p->sel], f); attach_client_to_frame(f, c); draw_frame(f); - invoke_wm_event(defaults[WM_EVENT_PAGE_UPDATE]); + invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); } void detach_client_from_frame(Client * c, int unmapped, int destroyed) { Frame *f = c->frame; - wmii_move_ixpfile(c->files[C_PREFIX], defaults[WM_DETACHED_CLIENT]); + wmii_move_ixpfile(c->files[C_PREFIX], def[WM_DETACHED_CLIENT]); c->frame = 0; - f->clients = - (Client **) detach_item((void **) f->clients, c, sizeof(Client *)); + f->client = + (Client **) detach_item((void **) f->client, c, sizeof(Client *)); if (f->sel) f->sel--; else @@ -468,16 +434,16 @@ void detach_client_from_frame(Client * c, int unmapped, int destroyed) } reparent_client(c, root, border_width(f), tab_height(f)); } - if (f->clients) { - focus_client(f->clients[f->sel], 1, 1); + if (f->client) { + focus_client(f->client[f->sel], 1, 1); draw_frame(f); } else { detach_frame_from_area(f, 0); destroy_frame(f); - if (pages) - focus_page(pages[sel], 0, 1); + if (page) + focus_page(page[sel], 0, 1); } - invoke_wm_event(defaults[WM_EVENT_PAGE_UPDATE]); + invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); } static void mouse() @@ -485,9 +451,9 @@ static void mouse() Frame *f; Align align; - if (!pages) + if (!page) return; - if (!(f = SELFRAME(pages[sel]))) + if (!(f = SELFRAME(page[sel]))) return; align = cursor_to_align(f->cursor); if (align == CENTER) @@ -499,7 +465,7 @@ static void mouse() static void select_client(void *obj, char *cmd) { Frame *f = obj; - int size = count_items((void **) f->clients); + int size = count_items((void **) f->client); if (!f || !cmd || size == 1) return; if (!strncmp(cmd, "prev", 5)) { @@ -513,7 +479,7 @@ static void select_client(void *obj, char *cmd) else f->sel++; } - focus_client(f->clients[f->sel], 1, 0); + focus_client(f->client[f->sel], 1, 0); draw_frame(f); } @@ -521,12 +487,12 @@ static void handle_before_read_frame(IXPServer * s, File * f) { int i = 0; - for (i = 0; frames && frames[i]; i++) { - if (f == frames[i]->files[F_SIZE]) { + for (i = 0; frame && frame[i]; i++) { + if (f == frame[i]->files[F_SIZE]) { char buf[64]; - snprintf(buf, 64, "%d,%d,%d,%d", frames[i]->rect.x, - frames[i]->rect.y, frames[i]->rect.width, - frames[i]->rect.height); + snprintf(buf, 64, "%d,%d,%d,%d", frame[i]->rect.x, + frame[i]->rect.y, frame[i]->rect.width, + frame[i]->rect.height); if (f->content) free(f->content); f->content = estrdup(buf); @@ -540,26 +506,26 @@ static void handle_after_write_frame(IXPServer * s, File * f) { int i; - for (i = 0; frames && frames[i]; i++) { - if (f == frames[i]->files[F_CTL]) { - run_action(f, frames[i], frame_acttbl); + for (i = 0; frame && frame[i]; i++) { + if (f == frame[i]->files[F_CTL]) { + run_action(f, frame[i], frame_acttbl); return; } - if (f == frames[i]->files[F_TAB] - || f == frames[i]->files[F_BORDER] - || f == frames[i]->files[F_HANDLE_INC]) { - if (frames[i]->area) { - frames[i]->area->layout->arrange(frames[i]->area); - draw_page(frames[i]->area->page); + if (f == frame[i]->files[F_TAB] + || f == frame[i]->files[F_BORDER] + || f == frame[i]->files[F_HANDLE_INC]) { + if (frame[i]->area) { + frame[i]->area->layout->arrange(frame[i]->area); + draw_page(frame[i]->area->page); } return; - } else if (f == frames[i]->files[F_SIZE]) { - char *size = frames[i]->files[F_SIZE]->content; + } else if (f == frame[i]->files[F_SIZE]) { + char *size = frame[i]->files[F_SIZE]->content; if (size && strrchr(size, ',')) { XRectangle frect; blitz_strtorect(&rect, &frect, size); - resize_frame(frames[i], &frect, 0, 0); - draw_page(frames[i]->area->page); + resize_frame(frame[i], &frect, 0, 0); + draw_page(frame[i]->area->page); } return; } diff --git a/cmd/wm/layout_column.c b/cmd/wm/layout_column.c @@ -23,7 +23,7 @@ struct Acme { struct Column { int sel; int refresh; - Frame **frames; + Frame **frame; XRectangle rect; }; @@ -48,15 +48,15 @@ void init_layout_column() static void arrange_column(Area * a, Column * col) { int i; - int n = count_items((void **) col->frames); + int n = count_items((void **) col->frame); unsigned int height = a->rect.height / n; - for (i = 0; col->frames && col->frames[i]; i++) { + for (i = 0; col->frame && col->frame[i]; i++) { if (col->refresh) { - col->frames[i]->rect = col->rect; - col->frames[i]->rect.height = height; - col->frames[i]->rect.y = i * height; + col->frame[i]->rect = col->rect; + col->frame[i]->rect.height = height; + col->frame[i]->rect.y = i * height; } - resize_frame(col->frames[i], &col->frames[i]->rect, 0, 1); + resize_frame(col->frame[i], &col->frame[i]->rect, 0, 1); } } @@ -109,50 +109,50 @@ static void init_col(Area * a) acme->column[cols] = 0; /* null termination of array */ /* - * Frame attaching strategy works as follows: 1. If more clients than + * Frame attaching strategy works as follows: 1. If more client than * column exist, then each column gets one client, except eastmost - * column, which gets all remaining clients. 2. If lesser clients + * column, which gets all remaining client. 2. If lesser client * than column exist, than filling begins from eastmost to westmost - * column until no more clients exist. + * column until no more client exist. */ - n = count_items((void **) clients); + n = count_items((void **) client); if (n > cols) { /* 1st. case */ j = 0; for (i = 0; i < (cols - 1); i++) { col = acme->column[i]; - col->frames = - (Frame **) attach_item_end((void **) col->frames, - alloc_frame(&clients[i]->rect, + col->frame = + (Frame **) attach_item_end((void **) col->frame, + alloc_frame(&client[i]->rect, 1, 1), sizeof(Frame *)); - col->frames[0]->aux = col; - attach_frame_to_area(a, col->frames[0]); - attach_client_to_frame(col->frames[0], clients[j]); + col->frame[0]->aux = col; + attach_frame_to_area(a, col->frame[0]); + attach_client_to_frame(col->frame[0], client[j]); j++; } col = acme->column[cols - 1]; - col->frames = emalloc((n - j + 1) * sizeof(Frame *)); + col->frame = emalloc((n - j + 1) * sizeof(Frame *)); for (i = 0; i + j < n; i++) { - col->frames[i] = alloc_frame(&clients[j + i]->rect, 1, 1); - col->frames[i]->aux = col; - attach_frame_to_area(a, col->frames[i]); - attach_client_to_frame(col->frames[i], clients[j + i]); + col->frame[i] = alloc_frame(&client[j + i]->rect, 1, 1); + col->frame[i]->aux = col; + attach_frame_to_area(a, col->frame[i]); + attach_client_to_frame(col->frame[i], client[j + i]); } - col->frames[i] = 0; + col->frame[i] = 0; } else { /* 2nd case */ j = 0; for (i = cols - 1; j < n; i--) { col = acme->column[i]; - col->frames = - (Frame **) attach_item_end((void **) col->frames, - alloc_frame(&clients[i]->rect, + col->frame = + (Frame **) attach_item_end((void **) col->frame, + alloc_frame(&client[i]->rect, 1, 1), sizeof(Frame *)); - col->frames[0]->aux = col; - attach_frame_to_area(a, col->frames[0]); - attach_client_to_frame(col->frames[0], clients[j]); + col->frame[0]->aux = col; + attach_frame_to_area(a, col->frame[0]); + attach_client_to_frame(col->frame[0], client[j]); j++; } } @@ -167,14 +167,14 @@ static void deinit_col(Area * a) for (i = 0; acme->column && acme->column[i]; i++) { Column *col = acme->column[i]; int j; - for (j = 0; col->frames && col->frames[j]; j++) { - Frame *f = col->frames[j]; - while (f->clients && f->clients[0]) - detach_client_from_frame(f->clients[0], 0, 0); + for (j = 0; col->frame && col->frame[j]; j++) { + Frame *f = col->frame[j]; + while (f->client && f->client[0]) + detach_client_from_frame(f->client[0], 0, 0); detach_frame_from_area(f, 1); destroy_frame(f); } - free(col->frames); + free(col->frame); } free(acme->column); free(acme); @@ -189,7 +189,7 @@ static void attach_col(Area * a, Client * c) col = acme->column[acme->sel]; f = alloc_frame(&c->rect, 1, 1); - col->frames = (Frame **) attach_item_end((void **) col->frames, f, + col->frame = (Frame **) attach_item_end((void **) col->frame, f, sizeof(Frame *)); f->aux = col; col->refresh = 1; @@ -207,7 +207,7 @@ static void detach_col(Area * a, Client * c, int unmapped, int destroyed) if (!col) return; /* client was not attached, maybe exit(1) in * such case */ - col->frames = (Frame **) detach_item((void **) col->frames, c->frame, + col->frame = (Frame **) detach_item((void **) col->frame, c->frame, sizeof(Frame *)); col->refresh = 1; detach_client_from_frame(c, unmapped, destroyed); @@ -242,14 +242,14 @@ static void drop_resize(Frame * f, XRectangle * new) col->rect.width += f->rect.x - new->x; col->rect.x = new->x; - for (i = 0; west->frames && west->frames[i]; i++) { - Frame *f = west->frames[i]; + for (i = 0; west->frame && west->frame[i]; i++) { + Frame *f = west->frame[i]; f->rect.x = west->rect.x; f->rect.width = west->rect.width; resize_frame(f, &f->rect, 0, 1); } - for (i = 0; col->frames && col->frames[i]; i++) { - Frame *f = col->frames[i]; + for (i = 0; col->frame && col->frame[i]; i++) { + Frame *f = col->frame[i]; f->rect.x = col->rect.x; f->rect.width = col->rect.width; resize_frame(f, &f->rect, 0, 1); @@ -266,14 +266,14 @@ static void drop_resize(Frame * f, XRectangle * new) col->rect.x = new->x; col->rect.width = new->width; - for (i = 0; col->frames && col->frames[i]; i++) { - Frame *f = col->frames[i]; + for (i = 0; col->frame && col->frame[i]; i++) { + Frame *f = col->frame[i]; f->rect.x = col->rect.x; f->rect.width = col->rect.width; resize_frame(f, &f->rect, 0, 1); } - for (i = 0; east->frames && east->frames[i]; i++) { - Frame *f = east->frames[i]; + for (i = 0; east->frame && east->frame[i]; i++) { + Frame *f = east->frame[i]; f->rect.x = east->rect.x; f->rect.width = east->rect.width; resize_frame(f, &f->rect, 0, 1); @@ -282,15 +282,15 @@ static void drop_resize(Frame * f, XRectangle * new) } /* vertical stuff */ n = 0; - for (i = 0; col->frames && col->frames[i]; i++) { - if (col->frames[i] == f) + for (i = 0; col->frame && col->frame[i]; i++) { + if (col->frame[i] == f) idx = i; n++; } if (new->y < f->rect.y) { - if (idx && new->y > col->frames[idx - 1]->rect.y) { - Frame *north = col->frames[idx - 1]; + if (idx && new->y > col->frame[idx - 1]->rect.y) { + Frame *north = col->frame[idx - 1]; north->rect.height = new->y - north->rect.y; f->rect.width += new->y - north->rect.y; f->rect.y = new->y; @@ -300,9 +300,9 @@ static void drop_resize(Frame * f, XRectangle * new) } if (new->y + new->height > f->rect.y + f->rect.height) { if ((idx + 1 < n) && - (new->y + new->height < col->frames[idx + 1]->rect.y - + col->frames[idx + 1]->rect.height)) { - Frame *south = col->frames[idx + 1]; + (new->y + new->height < col->frame[idx + 1]->rect.y + + col->frame[idx + 1]->rect.height)) { + Frame *south = col->frame[idx + 1]; south->rect.width -= new->x + new->width - south->rect.x; south->rect.x = new->x + new->width; f->rect.x = new->x; @@ -335,21 +335,21 @@ static void _drop_move(Frame * f, XRectangle * new, XPoint * pt) /* use pointer as fixpoint */ if (tgt == src) { /* only change order within column */ - for (i = 0; tgt->frames && tgt->frames[i]; i++) { - Frame *fp = tgt->frames[i]; + for (i = 0; tgt->frame && tgt->frame[i]; i++) { + Frame *fp = tgt->frame[i]; if (blitz_ispointinrect(pt->x, pt->y, &fp->rect)) { if (fp == f) return; /* just ignore */ else { - int idxf = index_item((void **) tgt->frames, f); - int idxfp = index_item((void **) tgt->frames, fp); + int idxf = index_item((void **) tgt->frame, f); + int idxfp = index_item((void **) tgt->frame, fp); Frame *tmpf = f; XRectangle tmpr = f->rect; f->rect = fp->rect; fp->rect = tmpr; - tgt->frames[idxf] = tgt->frames[idxfp]; - tgt->frames[idxfp] = tmpf; + tgt->frame[idxf] = tgt->frame[idxfp]; + tgt->frame[idxfp] = tmpf; resize_frame(f, &f->rect, 0, 1); resize_frame(fp, &fp->rect, 0, 1); } @@ -358,10 +358,10 @@ static void _drop_move(Frame * f, XRectangle * new, XPoint * pt) } } else { /* detach, attach and change order in target column */ - src->frames = (Frame **) detach_item((void **) src->frames, + src->frame = (Frame **) detach_item((void **) src->frame, f, sizeof(Frame *)); - tgt->frames = - (Frame **) attach_item_end((void **) tgt->frames, f, + tgt->frame = + (Frame **) attach_item_end((void **) tgt->frame, f, sizeof(Frame *)); tgt->refresh = 1; arrange_column(f->area, tgt); diff --git a/cmd/wm/mouse.c b/cmd/wm/mouse.c @@ -295,12 +295,8 @@ void mouse_move(Frame * f) Window dummy; XEvent ev; /* borders */ - int snapw = - rect.width * _strtonum(defaults[WM_SNAP_VALUE]->content, 0, - 1000) / 1000; - int snaph = - rect.height * _strtonum(defaults[WM_SNAP_VALUE]->content, 0, - 1000) / 1000; + int snapw = rect.width * _strtonum(def[WM_SNAP_VALUE]->content, 0, 1000) / 1000; + int snaph = rect.height * _strtonum(def[WM_SNAP_VALUE]->content, 0, 1000) / 1000; unsigned int num; unsigned int dmask; XRectangle *rects = rectangles(&num); @@ -330,7 +326,7 @@ void mouse_move(Frame * f) draw_pseudo_border(&frect); resize_frame(f, &frect, &pt, 0); } - draw_page(pages[sel]); + draw_page(page[sel]); free(rects); XUngrabPointer(dpy, CurrentTime /* ev.xbutton.time */ ); XUngrabServer(dpy); @@ -542,12 +538,8 @@ void mouse_resize(Frame * f, Align align) Window dummy; XEvent ev; /* borders */ - int snapw = - rect.width * _strtonum(defaults[WM_SNAP_VALUE]->content, 0, - 1000) / 1000; - int snaph = - rect.height * _strtonum(defaults[WM_SNAP_VALUE]->content, 0, - 1000) / 1000; + int snapw = rect.width * _strtonum(def[WM_SNAP_VALUE]->content, 0, 1000) / 1000; + int snaph = rect.height * _strtonum(def[WM_SNAP_VALUE]->content, 0, 1000) / 1000; unsigned int dmask; unsigned int num; XRectangle *rects = rectangles(&num); @@ -604,16 +596,16 @@ void drop_move(Frame * f, XRectangle * new, XPoint * pt) { Area *a = f->area; int cx, cy; - unsigned int i, idx = index_item((void **) a->frames, f); + unsigned int i, idx = index_item((void **) a->frame, f); if ((f->rect.x == new->x) && (f->rect.y == new->y)) return; cx = (pt ? pt->x : new->x + new->width / 2); cy = (pt ? pt->y : new->y + new->height / 2); - for (i = 0; a->frames[i]; i++) { - if ((a->frames[i] != f) - && blitz_ispointinrect(cx, cy, &a->frames[i]->rect)) { - swap((void **) &a->frames[i], (void **) &a->frames[idx]); + for (i = 0; a->frame[i]; i++) { + if ((a->frame[i] != f) + && blitz_ispointinrect(cx, cy, &a->frame[i]->rect)) { + swap((void **) &a->frame[i], (void **) &a->frame[idx]); a->sel = i; a->layout->arrange(a); return; diff --git a/cmd/wm/page.c b/cmd/wm/page.c @@ -26,7 +26,7 @@ Page *alloc_page(char *autodestroy) { Page *p = emalloc(sizeof(Page)); char buf[MAX_BUF]; - int id = count_items((void **) pages) + 1; + int id = count_items((void **) page) + 1; *p = zero_page; snprintf(buf, sizeof(buf), "/page/%d", id); @@ -41,38 +41,37 @@ Page *alloc_page(char *autodestroy) p->files[P_CTL]->after_write = handle_after_write_page; snprintf(buf, sizeof(buf), "/page/%d/auto-destroy", id); p->files[P_AUTO_DESTROY] = wmii_create_ixpfile(ixps, buf, autodestroy); - pages = (Page **) attach_item_end((void **) pages, p, sizeof(Page *)); - sel = index_item((void **) pages, p); - defaults[WM_SEL_PAGE]->content = p->files[P_PREFIX]->content; - invoke_wm_event(defaults[WM_EVENT_PAGE_UPDATE]); + page = (Page **) attach_item_end((void **) page, p, sizeof(Page *)); + sel = index_item((void **) page, p); + def[WM_SEL_PAGE]->content = p->files[P_PREFIX]->content; + invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); return p; } void destroy_page(Page * p) { unsigned int i; - for (i = 0; p->areas[i]; i++) - destroy_area(p->areas[i]); + for (i = 0; p->area[i]; i++) + destroy_area(p->area[i]); free_page(p); - if (pages) { - show_page(pages[sel]); - defaults[WM_SEL_PAGE]->content = - pages[sel]->files[P_PREFIX]->content; - focus_page(pages[sel], 0, 1); - invoke_wm_event(defaults[WM_EVENT_PAGE_UPDATE]); + if (page) { + show_page(page[sel]); + def[WM_SEL_PAGE]->content = page[sel]->files[P_PREFIX]->content; + focus_page(page[sel], 0, 1); + invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); } } void free_page(Page * p) { - pages = (Page **) detach_item((void **) pages, p, sizeof(Page *)); - if (pages) { + page = (Page **) detach_item((void **) page, p, sizeof(Page *)); + if (page) { if (sel - 1 >= 0) sel--; else sel = 0; } - defaults[WM_SEL_PAGE]->content = 0; + def[WM_SEL_PAGE]->content = 0; ixp_remove_file(ixps, p->files[P_PREFIX]); if (ixps->errstr) fprintf(stderr, "wmiiwm: free_page(): %s\n", ixps->errstr); @@ -81,17 +80,17 @@ void free_page(Page * p) void focus_page(Page * p, int raise, int down) { - if (!pages) + if (!page) return; - if (p != pages[sel]) { - hide_page(pages[sel]); - sel = index_item((void **) pages, p); - show_page(pages[sel]); - defaults[WM_SEL_PAGE]->content = p->files[P_PREFIX]->content; - invoke_wm_event(defaults[WM_EVENT_PAGE_UPDATE]); + if (p != page[sel]) { + hide_page(page[sel]); + sel = index_item((void **) page, p); + show_page(page[sel]); + def[WM_SEL_PAGE]->content = p->files[P_PREFIX]->content; + invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]); } if (down) - focus_area(p->areas[p->sel], raise, 0, down); + focus_area(p->area[p->sel], raise, 0, down); } void draw_page(Page * p) @@ -99,8 +98,8 @@ void draw_page(Page * p) int i; if (!p) return; - for (i = 0; p->areas && p->areas[i]; i++) - draw_area(p->areas[i]); + for (i = 0; p->area && p->area[i]; i++) + draw_area(p->area[i]); } XRectangle *rectangles(unsigned int *num) @@ -158,15 +157,15 @@ static void select_frame(void *obj, char *cmd) { int i; Frame *f, *old; - f = old = pages ? SELFRAME(pages[sel]) : 0; + f = old = page ? SELFRAME(page[sel]) : 0; if (!f || !cmd) return; if (!strncmp(cmd, "prev", 5)) { - i = index_prev_item((void **) f->area->frames, f); - f = f->area->frames[i]; + i = index_prev_item((void **) f->area->frame, f); + f = f->area->frame[i]; } else if (!strncmp(cmd, "next", 5)) { - i = index_next_item((void **) f->area->frames, f); - f = f->area->frames[i]; + i = index_next_item((void **) f->area->frame, f); + f = f->area->frame[i]; } if (old != f) { focus_frame(f, 1, 1, 1); @@ -180,15 +179,15 @@ void hide_page(Page * p) { int i; - for (i = 0; p->areas && p->areas[i]; i++) - hide_area(p->areas[i]); + for (i = 0; p->area && p->area[i]; i++) + hide_area(p->area[i]); } void show_page(Page * p) { int i; - for (i = 0; p->areas && p->areas[i]; i++) - show_area(p->areas[i]); + for (i = 0; p->area && p->area[i]; i++) + show_area(p->area[i]); } Layout *get_layout(char *name) @@ -209,8 +208,8 @@ static void handle_after_write_page(IXPServer * s, File * f) { int i; - for (i = 0; pages && pages[i]; i++) { - Page *p = pages[i]; + for (i = 0; page && page[i]; i++) { + Page *p = page[i]; if (p->files[P_CTL] == f) { run_action(f, p, page_acttbl); return; @@ -254,7 +253,7 @@ static void handle_after_write_page(IXPServer * s, File * f) } } if (!p->layout) { - / make all managed clients floating / + / make all managed client floating / int j; Frame **tmp = 0; while (p->managed) { @@ -294,7 +293,7 @@ attach_frame_to_page(Page * p, Frame * f, int managed) wmii_move_ixpfile(f->files[F_PREFIX], p->files[P_MANAGED_PREFIX]); p->files[P_MANAGED_SELECTED]->content = f->files[F_PREFIX]->content; - if (p == pages[sel_page]) + if (p == page[sel_page]) for (i = 0; p->floating && p->floating[i]; i++) XRaiseWindow(dpy, p->floating[i]->win); } else { diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -115,37 +115,37 @@ static void draw_pager_page(Page * p, Draw * d) unsigned int i, j; XRectangle r = d->rect; char name[4]; - if (p == pages[sel]) { - d->bg = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_BG_COLOR]->content); - d->fg = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_FG_COLOR]->content); - d->border = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_BORDER_COLOR]->content); + if (p == page[sel]) { + 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); d->font = font; } else { - d->bg = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_BG_COLOR]->content); - d->fg = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_FG_COLOR]->content); - d->border = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_BORDER_COLOR]->content); + d->bg = blitz_loadcolor(dpy, screen_num, def[WM_NORM_BG_COLOR]->content); + 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); d->font = font; } - snprintf(name, sizeof(name), "%d", index_item((void **) pages, p)); + snprintf(name, sizeof(name), "%d", index_item((void **) page, p)); d->data = name; blitz_drawlabel(dpy, d); XSync(dpy, False); - for (i = 0; p->areas[i]; i++) { - for (j = 0; p->areas[i]->frames[j]; j++) { - if (i == p->sel && j == p->areas[i]->sel) { - d->bg = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_BG_COLOR]->content); - d->fg = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_FG_COLOR]->content); - d->border = blitz_loadcolor(dpy, screen_num, defaults[WM_SEL_BORDER_COLOR]->content); + for (i = 0; p->area[i]; i++) { + for (j = 0; p->area[i]->frame[j]; j++) { + if (i == p->sel && j == p->area[i]->sel) { + 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); d->font = font; } else { - d->bg = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_BG_COLOR]->content); - d->fg = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_FG_COLOR]->content); - d->border = blitz_loadcolor(dpy, screen_num, defaults[WM_NORM_BORDER_COLOR]->content); + d->bg = blitz_loadcolor(dpy, screen_num, def[WM_NORM_BG_COLOR]->content); + 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); d->font = font; } - d->data = p->areas[i]->frames[j]->clients[p->areas[i]->frames[j]->sel]->files[C_NAME]->content; - scale_rect(&rect, &r, &p->areas[i]->rect, &d->rect); + d->data = p->area[i]->frame[j]->client[p->area[i]->frame[j]->sel]->files[C_NAME]->content; + scale_rect(&rect, &r, &p->area[i]->rect, &d->rect); blitz_drawlabel(dpy, d); XSync(dpy, False); /* do not clear upwards */ } @@ -159,7 +159,7 @@ static void draw_pager() int dx; Draw d = { 0 }; - blitz_getbasegeometry((void **) pages, &size, &cols, &rows); + blitz_getbasegeometry((void **) page, &size, &cols, &rows); dx = (cols - 1) * GAP; /* GAPpx space */ tw = (rect.width - dx) / cols; th = ((double) tw / rect.width) * rect.height; @@ -174,9 +174,9 @@ static void draw_pager() else d.rect.y = ir * (rect.height - th) / (rows - 1); d.rect.height = th; - if (!pages[i]) + if (!page[i]) return; - draw_pager_page(pages[i], &d); + draw_pager_page(page[i], &d); i++; } } @@ -189,9 +189,9 @@ static Page *xy_to_pager_page(int x, int y) int dx; XRectangle r; - if (!pages) + if (!page) return 0; - blitz_getbasegeometry((void **) pages, &size, &cols, &rows); + blitz_getbasegeometry((void **) page, &size, &cols, &rows); dx = (cols - 1) * GAP; /* GAPpx space */ tw = (rect.width - dx) / cols; th = ((double) tw / rect.width) * rect.height; @@ -205,10 +205,10 @@ static Page *xy_to_pager_page(int x, int y) else r.y = ir * (rect.height - th) / (rows - 1); r.height = th; - if (!pages[i]) + if (!page[i]) return 0; if (blitz_ispointinrect(x, y, &r)) - return pages[i]; + return page[i]; i++; } } @@ -234,7 +234,7 @@ static void pager(void *obj, char *cmd) XEvent ev; int i; - if (!pages) + if (!page) return; XClearWindow(dpy, transient); @@ -256,8 +256,8 @@ static void pager(void *obj, char *cmd) case KeyPress: XUnmapWindow(dpy, transient); if ((i = handle_kpress(&ev.xkey)) != -1) - if (i < count_items((void **) pages)) - focus_page(pages[i], 0, 1); + if (i < count_items((void **) page)) + focus_page(page[i], 0, 1); XUngrabKeyboard(dpy, CurrentTime); return; break; @@ -375,9 +375,9 @@ static void icons(void *obj, char *cmd) static void _close_client(void *obj, char *cmd) { - Frame *f = pages ? SELFRAME(pages[sel]) : 0; - if (f->clients[f->sel]) - close_client(f->clients[f->sel]); + Frame *f = page ? SELFRAME(page[sel]) : 0; + if (f->client[f->sel]) + close_client(f->client[f->sel]); } static void _attach_client(void *obj, char *cmd) @@ -394,38 +394,38 @@ static void _attach_client(void *obj, char *cmd) static void _detach_client(void *obj, char *cmd) { Frame *f; - if (!pages) + if (!page) return; - f = SELFRAME(pages[sel]); + f = SELFRAME(page[sel]); if (!f) return; - detach_client_from_frame(f->clients[f->sel], 0, 0); + detach_client_from_frame(f->client[f->sel], 0, 0); } static void _select_page(void *obj, char *cmd) { - if (!pages || !cmd) + if (!page || !cmd) return; if (!strncmp(cmd, "prev", 5)) - sel = index_prev_item((void **) pages, pages[sel]); + sel = index_prev_item((void **) page, page[sel]); else if (!strncmp(cmd, "next", 5)) - sel = index_next_item((void **) pages, pages[sel]); + sel = index_next_item((void **) page, page[sel]); else - sel = _strtonum(cmd, 0, count_items((void **) pages)); - focus_page(pages[sel], 0, 1); + sel = _strtonum(cmd, 0, count_items((void **) page)); + focus_page(page[sel], 0, 1); } static void _destroy_page(void *obj, char *cmd) { - if (!pages) + if (!page) return; - destroy_page(pages[sel]); + destroy_page(page[sel]); } static void new_page(void *obj, char *cmd) { - if (pages) - hide_page(pages[sel]); + if (page) + hide_page(page[sel]); alloc_page("0"); } @@ -433,9 +433,9 @@ Client *win_to_client(Window w) { int i; - for (i = 0; clients && clients[i]; i++) - if (clients[i]->win == w) - return clients[i]; + for (i = 0; client && client[i]; i++) + if (client[i]->win == w) + return client[i]; return 0; } @@ -521,14 +521,14 @@ int win_state(Window w) void handle_after_write(IXPServer * s, File * f) { - if (f == defaults[WM_CTL]) + if (f == def[WM_CTL]) run_action(f, 0, wm_acttbl); - else if (f == defaults[WM_TRANS_COLOR]) { + else if (f == def[WM_TRANS_COLOR]) { unsigned long col[1]; col[0] = xorcolor.pixel; XFreeColors(dpy, DefaultColormap(dpy, screen_num), col, 1, 0); XAllocNamedColor(dpy, DefaultColormap(dpy, screen_num), - defaults[WM_TRANS_COLOR]->content, + def[WM_TRANS_COLOR]->content, &xorcolor, &xorcolor); XSetForeground(dpy, xorgc, xorcolor.pixel); } @@ -561,35 +561,35 @@ static void init_cursors() se_cursor = XCreateFontCursor(dpy, XC_bottom_right_corner); } -static void init_defaults() -{ - defaults[WM_DETACHED_FRAME] = ixp_create(ixps, "/detached/frame"); - defaults[WM_DETACHED_CLIENT] = ixp_create(ixps, "/detached/client"); - defaults[WM_TRANS_COLOR] = wmii_create_ixpfile(ixps, "/default/transcolor", BLITZ_SEL_FG_COLOR); - defaults[WM_TRANS_COLOR]->after_write = handle_after_write; - defaults[WM_SEL_BG_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/bgcolor", BLITZ_SEL_BG_COLOR); - defaults[WM_SEL_FG_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/fgcolor", BLITZ_SEL_FG_COLOR); - defaults[WM_SEL_BORDER_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/fgcolor", BLITZ_SEL_BORDER_COLOR); - defaults[WM_NORM_BG_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/bgcolor", BLITZ_NORM_BG_COLOR); - defaults[WM_NORM_FG_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/fgcolor", BLITZ_NORM_FG_COLOR); - defaults[WM_NORM_BORDER_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/fgcolor", BLITZ_NORM_BORDER_COLOR); - defaults[WM_FONT] = wmii_create_ixpfile(ixps, "/default/font", BLITZ_FONT); - defaults[WM_FONT]->after_write = handle_after_write; - defaults[WM_PAGE_SIZE] = wmii_create_ixpfile(ixps, "/default/pagesize", "0,0,east,south-16"); - defaults[WM_SNAP_VALUE] = wmii_create_ixpfile(ixps, "/default/snapvalue", "20"); /* 0..1000 */ - defaults[WM_BORDER] = wmii_create_ixpfile(ixps, "/default/border", "1"); - defaults[WM_TAB] = wmii_create_ixpfile(ixps, "/default/tab", "1"); - defaults[WM_HANDLE_INC] = wmii_create_ixpfile(ixps, "/default/handleinc", "1"); - defaults[WM_LOCKED] = wmii_create_ixpfile(ixps, "/default/locked", "1"); - defaults[WM_LAYOUT] = wmii_create_ixpfile(ixps, "/default/layout", LAYOUT); - defaults[WM_SEL_PAGE] = ixp_create(ixps, "/page/sel"); - defaults[WM_EVENT_PAGE_UPDATE] = ixp_create(ixps, "/default/event/pageupdate"); - defaults[WM_EVENT_CLIENT_UPDATE] = ixp_create(ixps, "/default/event/clientupdate"); - defaults[WM_EVENT_B1PRESS] = ixp_create(ixps, "/defaults/event/b1press"); - defaults[WM_EVENT_B2PRESS] = ixp_create(ixps, "/defaults/event/b2press"); - defaults[WM_EVENT_B3PRESS] = ixp_create(ixps, "/defaults/event/b3press"); - defaults[WM_EVENT_B4PRESS] = ixp_create(ixps, "/defaults/event/b4press"); - defaults[WM_EVENT_B5PRESS] = ixp_create(ixps, "/defaults/event/b5press"); +static void init_default() +{ + def[WM_DETACHED_FRAME] = ixp_create(ixps, "/detached/frame"); + def[WM_DETACHED_CLIENT] = ixp_create(ixps, "/detached/client"); + def[WM_TRANS_COLOR] = wmii_create_ixpfile(ixps, "/default/transcolor", BLITZ_SEL_FG_COLOR); + def[WM_TRANS_COLOR]->after_write = handle_after_write; + def[WM_SEL_BG_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/bgcolor", BLITZ_SEL_BG_COLOR); + def[WM_SEL_FG_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/fgcolor", BLITZ_SEL_FG_COLOR); + def[WM_SEL_BORDER_COLOR] = wmii_create_ixpfile(ixps, "/default/selstyle/fgcolor", BLITZ_SEL_BORDER_COLOR); + def[WM_NORM_BG_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/bgcolor", BLITZ_NORM_BG_COLOR); + def[WM_NORM_FG_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/fgcolor", BLITZ_NORM_FG_COLOR); + def[WM_NORM_BORDER_COLOR] = wmii_create_ixpfile(ixps, "/default/normstyle/fgcolor", BLITZ_NORM_BORDER_COLOR); + def[WM_FONT] = wmii_create_ixpfile(ixps, "/default/font", BLITZ_FONT); + def[WM_FONT]->after_write = handle_after_write; + def[WM_PAGE_SIZE] = wmii_create_ixpfile(ixps, "/default/pageize", "0,0,east,south-16"); + def[WM_SNAP_VALUE] = wmii_create_ixpfile(ixps, "/default/snapvalue", "20"); /* 0..1000 */ + def[WM_BORDER] = wmii_create_ixpfile(ixps, "/default/border", "1"); + def[WM_TAB] = wmii_create_ixpfile(ixps, "/default/tab", "1"); + def[WM_HANDLE_INC] = wmii_create_ixpfile(ixps, "/default/handleinc", "1"); + def[WM_LOCKED] = wmii_create_ixpfile(ixps, "/default/locked", "1"); + def[WM_LAYOUT] = wmii_create_ixpfile(ixps, "/default/layout", LAYOUT); + def[WM_SEL_PAGE] = ixp_create(ixps, "/page/sel"); + def[WM_EVENT_PAGE_UPDATE] = ixp_create(ixps, "/default/event/pageupdate"); + def[WM_EVENT_CLIENT_UPDATE] = ixp_create(ixps, "/default/event/clientupdate"); + def[WM_EVENT_B1PRESS] = ixp_create(ixps, "/default/event/b1press"); + def[WM_EVENT_B2PRESS] = ixp_create(ixps, "/default/event/b2press"); + def[WM_EVENT_B3PRESS] = ixp_create(ixps, "/default/event/b3press"); + def[WM_EVENT_B4PRESS] = ixp_create(ixps, "/default/event/b4press"); + def[WM_EVENT_B5PRESS] = ixp_create(ixps, "/default/event/b5press"); } static void init_screen() @@ -598,7 +598,7 @@ static void init_screen() XSetWindowAttributes wa; XAllocNamedColor(dpy, DefaultColormap(dpy, screen_num), - defaults[WM_TRANS_COLOR]->content, + def[WM_TRANS_COLOR]->content, &xorcolor, &xorcolor); gcv.subwindow_mode = IncludeInferiors; gcv.function = GXxor; @@ -665,8 +665,8 @@ static void cleanup() int i; XWindowChanges wc; - for (i = 0; clients && clients[i]; i++) { - Client *c = clients[i]; + for (i = 0; client && client[i]; i++) { + Client *c = client[i]; Frame *f = c->frame; if (f) { gravitate(c, tab_height(f), border_width(f), 1); @@ -684,23 +684,23 @@ static void run() /* init */ init_event_hander(); - if (!(defaults[WM_CTL] = ixp_create(ixps, "/ctl"))) { + if (!(def[WM_CTL] = ixp_create(ixps, "/ctl"))) { perror("wmiiwm: cannot connect IXP server"); exit(1); } - defaults[WM_CTL]->after_write = handle_after_write; + def[WM_CTL]->after_write = handle_after_write; - clients = 0; - frames = 0; + client = 0; + frame = 0; detached = 0; - pages = 0; + page = 0; layouts = 0; sel = 0; init_atoms(); init_cursors(); - init_defaults(); - font = blitz_getfont(dpy, defaults[WM_FONT]->content); + init_default(); + font = blitz_getfont(dpy, def[WM_FONT]->content); init_lock_modifiers(dpy, &valid_mask, &num_lock_mask); init_screen(); init_layouts(); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -113,7 +113,7 @@ typedef struct Client Client; */ struct Page { - Area **areas; + Area **area; unsigned int sel; File *files[P_LAST]; }; @@ -131,7 +131,7 @@ struct Layout { struct Area { Layout *layout; Page *page; - Frame **frames; + Frame **frame; unsigned int sel; XRectangle rect; void *aux; /* free pointer */ @@ -144,7 +144,7 @@ struct Frame { GC gc; XRectangle rect; Cursor cursor; - Client **clients; + Client **client; int sel; void *aux; /* free pointer */ File *files[F_LAST]; @@ -161,8 +161,8 @@ struct Client { File *files[C_LAST]; }; -#define SELFRAME(x) (x && x->areas[x->sel]->frames ? x->areas[x->sel]->frames[x->areas[x->sel]->sel] : 0) -#define ISSELFRAME(x) (pages && SELFRAME(pages[sel]) == x) +#define SELFRAME(x) (x && x->area[x->sel]->frame ? x->area[x->sel]->frame[x->area[x->sel]->sel] : 0) +#define ISSELFRAME(x) (page && SELFRAME(page[sel]) == x) /* global variables */ Display *dpy; @@ -172,10 +172,10 @@ Window root; Window transient; XRectangle rect; Client **detached; -Page **pages; +Page **page; unsigned int sel; -Frame **frames; -Client **clients; +Frame **frame; +Client **client; XFontStruct *font; XColor xorcolor; GC xorgc; @@ -203,7 +203,7 @@ Cursor sw_cursor; Cursor se_cursor; /* default file pointers */ -File *defaults[WM_LAST]; +File *def[WM_LAST]; unsigned int valid_mask, num_lock_mask; diff --git a/config.mk b/config.mk @@ -17,7 +17,8 @@ LIBS = -L${LIBDIR} -L/usr/lib -lc -lm -L${X11LIB} -lX11 VERSION = 3-current # flags -CFLAGS = -O0 -g -Wall -W ${INCLUDES} -DVERSION=\"${VERSION}\" +CFLAGS = -O0 -g -Wall ${INCLUDES} -DVERSION=\"${VERSION}\" +#CFLAGS = -O0 -g -Wall -W ${INCLUDES} -DVERSION=\"${VERSION}\" LDFLAGS = -g ${LIBS} # compiler