wmii

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

commit 4c25ff1ad5d7d76554ec7bb632b520cf76a59d19
parent fefbab01e268df87f35a3e395ab7a6bba8dd5bd1
Author: garbeam <garbeam@localhost.localdomain>
Date:   Tue,  6 Dec 2005 20:09:23 +0200

some more fixes/simplifications


Diffstat:
cmd/wm/event.c | 5++---
cmd/wm/mouse.c | 15+++++++++------
cmd/wm/wm.c | 2--
cmd/wm/wm.h | 11+++++------
4 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/cmd/wm/event.c b/cmd/wm/event.c @@ -78,8 +78,7 @@ static void handle_buttonpress(XEvent * e) ev->state &= valid_mask; if (ev->state & Mod1Mask) { Align align; - if (!c->frame->area->page->sel) - XRaiseWindow(dpy, c->frame->win); + XRaiseWindow(dpy, c->frame->win); switch (ev->button) { case Button1: mouse_move(c->frame); @@ -247,7 +246,7 @@ static void handle_enternotify(XEvent * e) c = win_to_client(ev->window); if (c && c->frame && (ev->serial != ignore_enternotify_crap)) { - Frame *old = SELFRAME(page[sel]); + Frame *old = get_sel_frame(); if (old != c->frame) { sel_frame(c->frame, 1); draw_frame(old); diff --git a/cmd/wm/mouse.c b/cmd/wm/mouse.c @@ -326,7 +326,7 @@ void mouse_move(Frame * f) draw_pseudo_border(&frect); resize_frame(f, &frect, &pt); } - draw_page(page[sel]); + draw_page(get_sel_page()); free(rects); XUngrabPointer(dpy, CurrentTime /* ev.xbutton.time */ ); XUngrabServer(dpy); @@ -592,19 +592,22 @@ void mouse_resize(Frame * f, Align align) } -void drop_move(Frame * f, XRectangle * new, XPoint * pt) +void drop_move(Frame *f, XRectangle *new, XPoint *pt) { + Frame *fp; Area *a = f->area; int cx, cy; - unsigned int i, idx = index_item((void **) a->frame, f); + unsigned int i, idx = cext_get_item_index(&a->frames, f); + size_t size = cext_sizeof(&a->frames); 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->frame[i]; i++) { - if ((a->frame[i] != f) - && blitz_ispointinrect(cx, cy, &a->frame[i]->rect)) { + for (i = 0; i < size; i++) { + fp = cext_get_item(&a->frames, idx); + if ((i != idx) && blitz_ispointinrect(cx, cy, &fp->rect)) { + /* XXXX: implement swap replacement */ swap((void **) &a->frame[i], (void **) &a->frame[idx]); a->sel = i; a->layout->arrange(a); diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -708,8 +708,6 @@ static void run() } def[WM_CTL]->after_write = handle_after_write; - clients = frames = detached = pages = layouts = zero_container; - init_atoms(); init_cursors(); init_default(); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -165,12 +165,11 @@ int screen_num; Window root; Window transient; XRectangle rect; -Container detached; -Container pages; -Container frames; -Container clients; -Container layouts; -static Container zero_container = { 0 }; +Container detached = {0}; +Container pages = {0}; +Container frames = {0}; +Container clients = {0}; +Container layouts = {0}; XFontStruct *font; XColor xorcolor; GC xorgc;