wmii

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

commit 5d2ad493c6691e28a578dcfd74db3d6e5d066d57
parent 262c6ec4304f3ad064141528320e2b47dfa6a2d2
Author: Kris Maglione <jg@suckless.org>
Date:   Thu,  1 Oct 2009 20:18:22 -0400

Fix column divs on Xinerama setups.

Diffstat:
cmd/wmii/dat.h | 1-
cmd/wmii/div.c | 47++++++++++++++++++++++++-----------------------
2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/cmd/wmii/dat.h b/cmd/wmii/dat.h @@ -196,7 +196,6 @@ struct Divide { Area* left; Area* right; bool mapped; - int side; int x; }; diff --git a/cmd/wmii/div.c b/cmd/wmii/div.c @@ -14,10 +14,9 @@ getdiv(Divide ***dp) { WinAttr wa; Divide *d; - if(**dp) { + if(**dp) d = **dp; - d->side = 0; - }else { + else { d = emallocz(sizeof *d); wa.override_redirect = true; @@ -67,33 +66,36 @@ div_set(Divide *d, int x) { } static void -drawimg(Image *img, ulong cbg, ulong cborder, int side) { - Point pt[6]; +drawimg(Image *img, ulong cbg, ulong cborder, Divide *d) { + Point pt[8]; + int n, start, w; - pt[0] = Pt(0, 0); - pt[1] = Pt(Dx(img->r)/2 - 1, Dx(img->r)/2 - 1); + w = Dx(img->r)/2; + n = 0; + pt[n++] = Pt(w , 0); + pt[n++] = Pt(0, 0); + pt[n++] = Pt(w - 1, w - 1); - pt[2] = Pt(pt[1].x, Dy(img->r)); - pt[3] = Pt(Dx(img->r)/2, pt[2].y); + pt[n++] = Pt(w - 1, Dy(img->r)); + pt[n++] = Pt(w, pt[n-1].y); - pt[4] = Pt(pt[3].x, Dx(img->r)/2 - 1); - pt[5] = Pt(Dx(img->r) - 1, 0); + pt[n++] = Pt(w, w - 1); + pt[n++] = Pt(2*w - 1, 0); + pt[n++] = Pt(w, 0); - if (side & 1) - pt[0].x = pt[1].x = pt[2].x + 1; - if (side & 2) - pt[5].x = pt[4].x = pt[3].x - 1; + start = d->left ? 0 : n/2; + n = d->right && d->left ? n : n/2; - fillpoly(img, pt, nelem(pt), cbg); - drawpoly(img, pt, nelem(pt), CapNotLast, 1, cborder); + fillpoly(img, pt + start, n, cbg); + drawpoly(img, pt + start, n, CapNotLast, 1, cborder); } static void drawdiv(Divide *d) { fill(divmask, divmask->r, 0); - drawimg(divmask, 1, 1, d->side); - drawimg(divimg, divcolor.bg, divcolor.border, d->side); + drawimg(divmask, 1, 1, d); + drawimg(divimg, divcolor.bg, divcolor.border, d); copyimage(d->w, divimg->r, divimg, ZP); setshapemask(d->w, divmask, ZP); @@ -107,7 +109,7 @@ update_imgs(void) { w = 2 * (labelh(def.font) / 3); w = max(w, 10); /* XXX: Multihead. */ - h = Dy(selview->screenr); + h = Dy(scr.rect); if(divimg) { if(w == Dx(divimg->r) && h == Dy(divimg->r) @@ -145,16 +147,15 @@ div_update_all(void) { d->left = ap; d->right = a; div_set(d, a->r.min.x); + drawdiv(d); ap = a; - if (!ap) - d->side |= 1; if(!a->next) { d = getdiv(&dp); d->left = a; d->right = nil; div_set(d, a->r.max.x); - d->side |= 2; + drawdiv(d); } } for(d = *dp; d; d = d->next)