commit a1e41d15c1193468c4f2a708e0b8824b2886a519
parent 29825ad4c6f4a52b0242dab17b6de704a472f543
Author: Kris Maglione <jg@suckless.org>
Date: Fri, 30 May 2008 20:04:02 -0400
Minur cleanup.
Diffstat:
11 files changed, 90 insertions(+), 80 deletions(-)
diff --git a/cmd/wmii/bar.c b/cmd/wmii/bar.c
@@ -171,7 +171,6 @@ bar_draw(WMScreen *s) {
border(screen->ibuf, b->r, 1, b->col.border);
}
copyimage(s->barwin, r, screen->ibuf, ZP);
- sync();
}
Bar*
diff --git a/cmd/wmii/client.c b/cmd/wmii/client.c
@@ -262,27 +262,27 @@ client_destroy(Client *c) {
hide = true;
XGrabServer(display);
-
- /* In case the client is already unmapped */
+ /* In case the client is already destroyed. */
handler = XSetErrorHandler(ignoreerrors);
- none = nil;
- client_setviews(c, &none);
sethandler(&c->w, nil);
- refree(&c->tagre);
- refree(&c->tagvre);
- free(c->retags);
-
if(hide)
reparentwindow(&c->w, &scr.root, screen->r.max);
else
reparentwindow(&c->w, &scr.root, r.min);
- destroywindow(c->framewin);
sync();
XSetErrorHandler(handler);
XUngrabServer(display);
+ none = nil;
+ client_setviews(c, &none);
+ refree(&c->tagre);
+ refree(&c->tagvre);
+ free(c->retags);
+
+ destroywindow(c->framewin);
+
ewmh_destroyclient(c);
group_remove(c);
event("DestroyClient %C\n", c);
@@ -472,11 +472,9 @@ focus(Client *c, bool user) {
void
client_focus(Client *c) {
+ /* Round trip. */
static long id;
long _id;
- flushevents(FocusChangeMask, true);
-
- _id = id++ % 99;
if(c && c->group)
c->group->client = c;
@@ -484,9 +482,9 @@ client_focus(Client *c) {
sync();
flushevents(FocusChangeMask, true);
+ _id = id++ % 99;
Dprint(DFocus, "client_focus([%C]%s) %ld\n", c, clientname(c), _id);
- Dprint(DFocus, "\t%02d [%C]%s\n\t=> [%C]%s\n",
- _id,
+ Dprint(DFocus, "\t%02d [%C]%s\n\t=> [%C]%s\n", _id,
screen->focus, clientname(screen->focus),
c, clientname(c));
if(screen->focus != c) {
@@ -513,7 +511,7 @@ client_resize(Client *c, Rectangle r) {
f = c->sel;
frame_resize(f, r);
- if(f->area->view != screen->sel) {
+ if(f->view != screen->sel) {
client_unmap(c, IconicState);
unmap_frame(c);
return;
diff --git a/cmd/wmii/dat.h b/cmd/wmii/dat.h
@@ -133,6 +133,7 @@ struct Area {
bool floating;
ushort id;
int mode;
+ bool max;
Rectangle r;
Rectangle r_old;
};
@@ -237,13 +238,6 @@ struct Map {
uint nhash;
};
-struct MapEnt {
- ulong hash;
- const char* key;
- void* val;
- MapEnt* next;
-};
-
struct Rule {
Rule* next;
Reprog* regex;
diff --git a/cmd/wmii/event.c b/cmd/wmii/event.c
@@ -32,19 +32,19 @@ findtime(Display *d, XEvent *e, XPointer v) {
void
xtime_kludge(void) {
- Window *w;
+ /* Round trip. */
+ static Window *w;
WinAttr wa;
XEvent e;
long l;
- w = createwindow(&scr.root, Rect(0, 0, 1, 1), 0, InputOnly, &wa, 0);
-
- XSelectInput(display, w->w, PropertyChangeMask);
+ if(w == nil) {
+ w = createwindow(&scr.root, Rect(0, 0, 1, 1), 0, InputOnly, &wa, 0);
+ selectinput(w, PropertyChangeMask);
+ }
changeprop_long(w, "ATOM", "ATOM", &l, 0);
sync();
XIfEvent(display, &e, findtime, (void*)w);
-
- destroywindow(w);
}
@@ -368,6 +368,7 @@ unmapnotify(XEvent *e) {
ev = &e->xunmap;
if((w = findwin(ev->window)) && (ev->event == w->parent->w)) {
+ w->mapped = false;
if(ev->send_event || w->unmapped-- == 0)
handle(w, unmap, ev);
}
diff --git a/cmd/wmii/fns.h b/cmd/wmii/fns.h
@@ -175,9 +175,9 @@ void update_keys(void);
void init_screen(WMScreen*);
/* map.c */
-MapEnt* hash_get(Map*, const char*, int create);
+void** hash_get(Map*, const char*, bool create);
void* hash_rm(Map*, const char*);
-MapEnt* map_get(Map*, ulong, int create);
+void** map_get(Map*, ulong, bool create);
void* map_rm(Map*, ulong);
/* message.c */
diff --git a/cmd/wmii/frame.c b/cmd/wmii/frame.c
@@ -513,7 +513,6 @@ frame_draw(Frame *f) {
XSetWindowBackgroundPixmap(display, c->framewin->w, None);
copyimage(c->framewin, fr, img, ZP);
- sync();
}
void
diff --git a/cmd/wmii/geom.c b/cmd/wmii/geom.c
@@ -7,7 +7,7 @@
bool
rect_haspoint_p(Point pt, Rectangle r) {
return (pt.x >= r.min.x) && (pt.x < r.max.x)
- && (pt.y >= r.min.y) && (pt.y < r.max.y);
+ && (pt.y >= r.min.y) && (pt.y < r.max.y);
}
bool
@@ -22,7 +22,7 @@ Rectangle
rect_intersection(Rectangle r, Rectangle r2) {
Rectangle ret;
- /* canonrect(ret) != ret if not intersection */
+ /* ret != canonrect(ret) ≡ no intersection. */
ret.min.x = max(r.min.x, r2.min.x);
ret.max.x = min(r.max.x, r2.max.x);
ret.min.y = max(r.min.y, r2.min.y);
@@ -60,32 +60,35 @@ quadrant(Rectangle r, Point pt) {
Cursor
quad_cursor(Align align) {
switch(align) {
- case NEast:
- return cursor[CurNECorner];
- case NWest:
- return cursor[CurNWCorner];
- case SEast:
- return cursor[CurSECorner];
- case SWest:
- return cursor[CurSWCorner];
- default:
- return cursor[CurMove];
+ case NEast: return cursor[CurNECorner];
+ case NWest: return cursor[CurNWCorner];
+ case SEast: return cursor[CurSECorner];
+ case SWest: return cursor[CurSWCorner];
+ case South:
+ case North: return cursor[CurDVArrow];
+ case East:
+ case West: return cursor[CurDHArrow];
+ default: return cursor[CurMove];
}
}
Align
get_sticky(Rectangle src, Rectangle dst) {
- Align stickycorner = 0;
+ Align corner;
- if(src.min.x != dst.min.x && src.max.x == dst.max.x)
- stickycorner |= East;
+ corner = 0;
+ if(src.min.x != dst.min.x
+ && src.max.x == dst.max.x)
+ corner |= East;
else
- stickycorner |= West;
- if(src.min.y != dst.min.y && src.max.y == dst.max.y)
- stickycorner |= South;
+ corner |= West;
+
+ if(src.min.y != dst.min.y
+ && src.max.y == dst.max.y)
+ corner |= South;
else
- stickycorner |= North;
+ corner |= North;
- return stickycorner;
+ return corner;
}
diff --git a/cmd/wmii/key.c b/cmd/wmii/key.c
@@ -54,16 +54,20 @@ str2modmask(const char *val) {
}
static void
-grabkey(Key *k) {
- XGrabKey(display, k->key, k->mod, scr.root.w,
+_grab(XWindow w, int keycode, uint mod) {
+ XGrabKey(display, keycode, mod, w,
true, GrabModeAsync, GrabModeAsync);
+}
+
+static void
+grabkey(Key *k) {
+ /* Round trip. */
+ _grab(scr.root.w, k->key, k->mod);
if(numlock_mask) {
- XGrabKey(display, k->key, k->mod | numlock_mask, scr.root.w,
- true, GrabModeAsync, GrabModeAsync);
- XGrabKey(display, k->key, k->mod | numlock_mask | LockMask, scr.root.w,
- true, GrabModeAsync, GrabModeAsync);
+ _grab(scr.root.w, k->key, k->mod | numlock_mask);
+ _grab(scr.root.w, k->key, k->mod | numlock_mask | LockMask);
}
- sync();
+ /* sync(); */
}
static void
@@ -73,7 +77,9 @@ ungrabkey(Key *k) {
XUngrabKey(display, k->key, k->mod | numlock_mask, scr.root.w);
XUngrabKey(display, k->key, k->mod | numlock_mask | LockMask, scr.root.w);
}
+ /*
sync();
+ */
}
static Key *
@@ -253,3 +259,4 @@ update_keys(void) {
}
sync();
}
+
diff --git a/cmd/wmii/map.c b/cmd/wmii/map.c
@@ -5,6 +5,13 @@
/* Edit s/^([a-zA-Z].*)\n([a-z].*) {/\1 \2;/g x/^([^a-zA-Z]|static|$)/-+d s/ (\*map|val|*str)//g */
+struct MapEnt {
+ ulong hash;
+ const char* key;
+ void* val;
+ MapEnt* next;
+};
+
MapEnt *NM;
/* By Dan Bernstein. Public domain. */
@@ -69,20 +76,20 @@ hash_getp(Map *map, const char *str, int create) {
return e;
}
-MapEnt*
-map_get(Map *map, ulong val, int create) {
- MapEnt **e;
+void**
+map_get(Map *map, ulong val, bool create) {
+ MapEnt *e;
- e = map_getp(map, val, create);
- return *e;
+ e = *map_getp(map, val, create);
+ return e ? &e->val : nil;
}
-MapEnt*
-hash_get(Map *map, const char *str, int create) {
- MapEnt **e;
+void**
+hash_get(Map *map, const char *str, bool create) {
+ MapEnt *e;
- e = hash_getp(map, str, create);
- return *e;
+ e = *hash_getp(map, str, create);
+ return e ? &e->val : nil;
}
void*
@@ -116,3 +123,4 @@ hash_rm(Map *map, const char *str) {
}
return ret;
}
+
diff --git a/cmd/wmii/view.c b/cmd/wmii/view.c
@@ -118,6 +118,7 @@ view_destroy(View *v) {
assert(v != v->next);
/* FIXME: Can do better */
+ /* Detach frames held here by regex tags. */
for(a=v->area; a; a=an) {
an = a->next;
for(f=a->frame; f; f=fn) {
diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c
@@ -366,7 +366,7 @@ lowerwin(Window *w) {
Handlers*
sethandler(Window *w, Handlers *new) {
Handlers *old;
- MapEnt *e;
+ void **e;
assert(w->type == WWindow);
assert((w->prev != nil && w->next != nil) || w->next == w->prev);
@@ -374,8 +374,8 @@ sethandler(Window *w, Handlers *new) {
if(new == nil)
map_rm(&windowmap, (ulong)w->w);
else {
- e = map_get(&windowmap, (ulong)w->w, 1);
- e->val = w;
+ e = map_get(&windowmap, (ulong)w->w, true);
+ *e = w;
}
old = w->handler;
w->handler = new;
@@ -384,11 +384,11 @@ sethandler(Window *w, Handlers *new) {
Window*
findwin(XWindow w) {
- MapEnt *e;
+ void **e;
- e = map_get(&windowmap, (ulong)w, 0);
+ e = map_get(&windowmap, (ulong)w, false);
if(e)
- return e->val;
+ return *e;
return nil;
}
@@ -651,12 +651,12 @@ labelh(Font *font) {
/* Misc */
Atom
xatom(char *name) {
- MapEnt *e;
+ void **e;
- e = hash_get(&atommap, name, 1);
- if(e->val == nil)
- e->val = (void*)XInternAtom(display, name, false);
- return (Atom)e->val;
+ e = hash_get(&atommap, name, true);
+ if(*e == nil)
+ *e = (void*)XInternAtom(display, name, false);
+ return (Atom)*e;
}
void