wmii

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

commit e4ecfe1cb08465af78a932e5cd53e81589754f94
parent 594b9f508d6b4d0c52b007714dbf8f89d28ffea4
Author: Kris Maglione <kris@suckless.org>
Date:   Sat, 17 Sep 2011 17:58:32 -0400

Merge.

Diffstat:
cmd/wmii/float.c | 13++++++++++---
cmd/wmii/mouse.c | 56+++++++++++++++++++++++++++++++++-----------------------
lib/libstuff/geom/quadrant.c | 8++++----
3 files changed, 47 insertions(+), 30 deletions(-)

diff --git a/cmd/wmii/float.c b/cmd/wmii/float.c @@ -74,7 +74,8 @@ float_arrange(Area *a) { break; case Colstack: for(f=a->frame; f; f=f->anext) - f->collapsed = (f != a->sel); + f->collapsed = !(f->client->w.ewmh.type & (TypeDock|TypeMenu|TypeToolbar)) + && (f != a->sel); break; default: die("not reached"); @@ -162,12 +163,14 @@ float_placeframe(Frame *f) { Vector_rect *vp; Rectangle r; Point dim, p; + Area *a, *sel; Client *c; Frame *ff; - Area *a, *sel; + View *v; long area, l; int i, s; + v = f->view; a = f->area; c = f->client; @@ -212,7 +215,11 @@ float_placeframe(Frame *f) { s = sel->screen; } - r = s == -1 ? a->r : screens[s]->r; + if (s == -1) + r = a->r; + else + r = v->r[s]; + vp = unique_rects(&vec, r); area = LONG_MAX; diff --git a/cmd/wmii/mouse.c b/cmd/wmii/mouse.c @@ -223,7 +223,7 @@ readmotion(Point *p) { static void mouse_resizecolframe(Frame *f, Align align) { - Window *cwin, *hwin; + Window *cwin, *hwin = nil; Divide *d; View *v; Area *a; @@ -245,7 +245,7 @@ mouse_resizecolframe(Frame *f, Align align) { d = d->next; } - if(align&East) + if(align & East) d = d->next; min.x = column_minwidth(); @@ -263,72 +263,82 @@ mouse_resizecolframe(Frame *f, Align align) { r.rmax.xy = r.rmin.xy plus 1; \ }) + r = f->r; if(align & North) frob(f->aprev, f, aprev, min, max, +, -, y, false); - else + else if(align & South) frob(f->anext, f, anext, max, min, -, +, y, false); if(align & West) frob(a->prev, a, prev, min, max, +, -, x, true); - else + else if(align & East) frob(a->next, a, next, max, min, -, +, x, true); #undef frob cwin = constraintwin(r); r = f->r; - if(align&North) + if(align & North) r.min.y--; - else + else if(align & South) r.min.y = r.max.y - 1; r.max.y = r.min.y + 2; - hwin = gethsep(r); + if(align & (North|South)) + hwin = gethsep(r); if(!grabpointer(&scr.root, cwin, cursor[CurSizing], MouseMask)) goto done; - pt.x = ((align&West) ? f->r.min.x : f->r.max.x); - pt.y = ((align&North) ? f->r.min.y : f->r.max.y); + pt.x = (align & West ? f->r.min.x : f->r.max.x); + pt.y = (align & North ? f->r.min.y : f->r.max.y); warppointer(pt); while(readmotion(&pt)) { - if(align&West) + if(align & West) r.min.x = pt.x; - else + else if(align & East) r.max.x = pt.x; - r.min.y = ((align&South) ? pt.y : pt.y-1); + + if(align & South) + r.min.y = pt.y; + else if(align & North) + r.min.y = pt.y - 1; r.max.y = r.min.y+2; - div_set(d, pt.x); - reshapewin(hwin, r); + if(align & (East|West)) + div_set(d, pt.x); + if(hwin) + reshapewin(hwin, r); } r = f->r; - if(align&West) + if(align & West) r.min.x = pt.x; - else + else if(align & East) r.max.x = pt.x; - if(align&North) + if(align & North) r.min.y = pt.y; - else + else if(align & South) r.max.y = pt.y; column_resizeframe(f, r); /* XXX: Magic number... */ - if(align&West) + if(align & West) pt.x = f->r.min.x + 4; - else + else if(align & East) pt.x = f->r.max.x - 4; - if(align&North) + + if(align & North) pt.y = f->r.min.y + 4; - else + else if(align & South) pt.y = f->r.max.y - 4; warppointer(pt); done: ungrabpointer(); destroyconstraintwin(cwin); - destroywindow(hwin); + if (hwin) + destroywindow(hwin); } void diff --git a/lib/libstuff/geom/quadrant.c b/lib/libstuff/geom/quadrant.c @@ -8,10 +8,10 @@ quadrant(Rectangle r, Point pt) { Align ret; pt = subpt(pt, r.min); - ret = East * (pt.x >= Dx(r) * .5) - | West * (pt.x < Dx(r) * .5) - | South * (pt.y >= Dy(r) * .5) - | North * (pt.y < Dy(r) * .5); + ret = East * (pt.x >= Dx(r) * .7) + | West * (pt.x <= Dx(r) * .3) + | South * (pt.y >= Dy(r) * .7) + | North * (pt.y <= Dy(r) * .3); return ret; }