wmii

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

commit cd607938f9046839df9e5026ae323c16534b2dfb
parent 2e80572fee526ab119453b79b82663c50a451855
Author: Kris Maglione <jg@suckless.org>
Date:   Sun, 11 Feb 2007 23:24:11 -0500

Cleanup. Experiment with a new dragbox design.


Diffstat:
area.c | 8++++----
client.c | 2+-
frame.c | 33+++++++++++++++++++++++----------
mouse.c | 48+++++++++++++++++++++++++++---------------------
4 files changed, 55 insertions(+), 36 deletions(-)

diff --git a/area.c b/area.c @@ -260,8 +260,8 @@ place_client(Area *a, Client *c) { y = 0; else y = fr->rect.y / dy; - maxx = (fr->rect.x + fr->rect.width) / dx; - maxy = (fr->rect.y + fr->rect.height) / dy; + maxx = r_east(&fr->rect) / dx; + maxy = r_south(&fr->rect) / dy; for(j = y; j < my && j < maxy; j++) for(i = x; i < mx && i < maxx; i++) field[j*mx + i] = False; @@ -286,13 +286,13 @@ place_client(Area *a, Client *c) { p1.x *= dx; p1.y *= dy; } - if(fit && (p1.x + f->rect.width < a->rect.x + a->rect.width)) + if(fit && (p1.x + f->rect.width < r_south(&a->rect))) f->rect.x = p1.x; else { diff = a->rect.width - f->rect.width; f->rect.x = a->rect.x + (random() % (diff ? diff : 1)); } - if(fit && (p1.y + f->rect.height < a->rect.y + a->rect.height)) + if(fit && (p1.y + f->rect.height < (r_south(&a->rect)))) f->rect.y = p1.y; else { diff = a->rect.height - f->rect.height; diff --git a/client.c b/client.c @@ -58,7 +58,7 @@ create_client(Window w, XWindowAttributes *wa) { /* depth */ DefaultDepth(blz.dpy, blz.screen), /* class */ CopyFromParent, /* visual */ DefaultVisual(blz.dpy, blz.screen), - /* valuemask */ CWOverrideRedirect | CWEventMask, + /* valuemask */ CWOverrideRedirect | CWEventMask | CWBackPixmap, /* attributes */&fwa ); c->gc = XCreateGC(blz.dpy, c->framewin, 0, 0); diff --git a/frame.c b/frame.c @@ -214,28 +214,41 @@ update_frame_widget_colors(Frame *f) { void draw_frame(Frame *f) { if(def.border) { - f->tile.border = def.border; + f->tile.border = 1; f->tile.rect = f->rect; f->tile.rect.x = f->tile.rect.y = 0; } f->grabbox.rect = f->tile.rect; - f->grabbox.rect.height = labelh(&def.font); - f->grabbox.rect.width = def.font.height; - f->titlebar.rect = f->grabbox.rect; + f->grabbox.rect.x += 2; + f->grabbox.rect.y += 2; + f->grabbox.rect.height = labelh(&def.font) - 4; + f->grabbox.rect.width = def.font.height - 3; + f->grabbox.border = 1; f->titlebar.rect.x = f->grabbox.rect.x + f->grabbox.rect.width; - f->titlebar.rect.width = f->rect.width - f->titlebar.rect.x; + f->titlebar.rect.y = f->tile.rect.y; + f->titlebar.rect.width = f->rect.width - f->titlebar.rect.x; + f->titlebar.rect.height = labelh(&def.font); f->titlebar.border = 0; draw_tile(&f->tile); draw_label(&f->titlebar, f->client->name); - f->grabbox.border = 3; - draw_tile(&f->grabbox); + draw_border(&f->tile); /* XXX: Hack */ f->titlebar.rect.x = 0; - f->titlebar.rect.width += f->grabbox.rect.width; + f->titlebar.rect.width = f->rect.width; f->titlebar.border = 1; draw_border(&f->titlebar); - XCopyArea(blz.dpy, pmap, f->client->framewin, f->client->gc, - 0, 0, f->rect.width, f->rect.height, 0, 0); + draw_tile(&f->grabbox); + XCopyArea( + /* display */ blz.dpy, + /* src */ pmap, + /* dest */ f->client->framewin, + /* gc */ f->client->gc, + /* x, y */ 0, 0, + /* width */ f->rect.width, + /* height */ f->rect.height, + /* dest_x */ 0, + /* dest_y */ 0 + ); XSync(blz.dpy, False); } diff --git a/mouse.c b/mouse.c @@ -71,13 +71,13 @@ snap_line(SnapArgs *a) { /* horizontal */ if(a->y1 == a->y2 && (a->mask & (NORTH|SOUTH))) { for(i=0; i < a->num; i++) { - if(!((a->rects[i].x + a->rects[i].width < a->x1) || - (a->rects[i].x > a->x2))) { + if(!(r_east(&a->rects[i]) < a->x1) || + (a->rects[i].x > a->x2)) { if(abs(a->rects[i].y - a->y1) <= abs(*a->delta)) *a->delta = a->rects[i].y - a->y1; - t_xy = a->rects[i].y + a->rects[i].height; + t_xy = r_south(&a->rects[i]); if(abs(t_xy - a->y1) < abs(*a->delta)) *a->delta = t_xy - a->y1; } @@ -87,13 +87,13 @@ snap_line(SnapArgs *a) { /* This is the same as above, tr/xy/yx/, * s/width/height/, s/height/width/ */ for(i=0; i < a->num; i++) { - if(!((a->rects[i].y + a->rects[i].height < a->y1) || - (a->rects[i].y > a->y2))) { + if(!(r_south(&a->rects[i]) < a->y1) || + (a->rects[i].y > a->y2)) { if(abs(a->rects[i].x - a->x1) <= abs(*a->delta)) *a->delta = a->rects[i].x - a->x1; - t_xy = a->rects[i].x + a->rects[i].width; + t_xy = r_east(&a->rects[i]); if(abs(t_xy - a->x1) < abs(*a->delta)) *a->delta = t_xy - a->x1; } @@ -110,21 +110,21 @@ snap_rect(XRectangle *rects, int num, XRectangle *current, BlitzAlign ret; a.x1 = current->x; - a.x2 = current->x + current->width; + a.x2 = r_east(current); a.delta = &dy; if(*mask & NORTH) { a.y2 = a.y1 = current->y; snap_line(&a); } if(*mask & SOUTH) { - a.y2 = a.y1 = current->y + current->height; + a.y2 = a.y1 = r_south(current); snap_line(&a); } a.y1 = current->y; - a.y2 = current->y + current->height; + a.y2 = r_south(current); a.delta = &dx; if(*mask & EAST) { - a.x1 = a.x2 = current->x + current->width; + a.x1 = a.x2 = r_east(current); snap_line(&a); } if(*mask & WEST) { @@ -153,11 +153,17 @@ draw_xor_border(XRectangle *r) { XSetLineAttributes(blz.dpy, xorgc, 1, LineSolid, CapNotLast, JoinMiter); if(xor.height > 4 && xor.width > 2) - XDrawLine(blz.dpy, blz.root, xorgc, xor.x + 2, xor.y + xor.height / 2, - xor.x + xor.width - 2, xor.y + xor.height / 2); + XDrawLine(blz.dpy, blz.root, xorgc, + xor.x + 2, + xor.y + xor.height / 2, + r_east(&xor) - 2, + xor.y + xor.height / 2); if(xor.width > 4 && xor.height > 2) - XDrawLine(blz.dpy, blz.root, xorgc, xor.x + xor.width / 2, xor.y + 2, - xor.x + xor.width / 2, xor.y + xor.height - 2); + XDrawLine(blz.dpy, blz.root, xorgc, + xor.x + xor.width / 2, + xor.y + 2, + xor.x + xor.width / 2, + r_south(&xor) - 2); XSetLineAttributes(blz.dpy, xorgc, 4, LineSolid, CapNotLast, JoinMiter); XDrawRectangles(blz.dpy, blz.root, xorgc, &xor, 1); XSync(blz.dpy, False); @@ -175,7 +181,7 @@ find_droppoint(Frame *frame, int x, int y, XRectangle *rect, Bool do_move) { a_prev = v->area; for(a = a_prev->next; a && a->next; a = a->next) { - if(x < (a->rect.x + a->rect.width)) + if(x < r_east(&a->rect)) break; a_prev = a; } @@ -190,8 +196,8 @@ find_droppoint(Frame *frame, int x, int y, XRectangle *rect, Bool do_move) { } return; } - if(x > (a->rect.x + a->rect.width - labelh(&def.font))) { - rect->x = a->rect.x + a->rect.width - 4; + if(x > (r_east(&a->rect) - labelh(&def.font))) { + rect->x = r_east(&a->rect) - 4; rect->width = 8; if(do_move) { @@ -209,7 +215,7 @@ find_droppoint(Frame *frame, int x, int y, XRectangle *rect, Bool do_move) { for(f = a->frame; f; f = f->anext) { if(y < f->rect.y) break; - if(y < (f->rect.y + f->rect.height)) + if(y < r_south(&f->rect)) break; f_close = f; } @@ -219,7 +225,7 @@ find_droppoint(Frame *frame, int x, int y, XRectangle *rect, Bool do_move) { rect->y = f->rect.y; rect->height = 2; if(f_close) { - rect->y = (f_close->rect.y + f_close->rect.height); + rect->y = r_south(&f_close->rect); rect->height = f->rect.y - rect->y; } if(do_move) { @@ -233,8 +239,8 @@ find_droppoint(Frame *frame, int x, int y, XRectangle *rect, Bool do_move) { } return; } - if(y > (f->rect.y + f->rect.height - labelh(&def.font))) { - rect->y = f->rect.y + f->rect.height; + if(y > r_south(&f->rect) - labelh(&def.font)) { + rect->y = r_south(&f->rect); rect->height = (screen->rect.height - labelh(&def.font) - rect->y); if(f->anext) rect->height = (f->anext->rect.y - rect->y);