wmii

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

commit 8102bb76d0f00e6b0abe93a35e822daf7d2b5593
parent 5a2a1de616022e6e75da99ab5ce375e659ec2903
Author: Kris Maglione <jg@suckless.org>
Date:   Fri,  2 Oct 2009 01:48:03 -0400

Fix drag indicator when dragging between Xinerama screens.

Diffstat:
cmd/wmii/layout.c | 13++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/cmd/wmii/layout.c b/cmd/wmii/layout.c @@ -27,6 +27,7 @@ struct Framewin { Point pt; int orientation; int xy; + int screen; }; static Rectangle @@ -48,8 +49,8 @@ framerect(Framewin *f) { /* Keep onscreen */ p = ZP; p.x -= min(0, r.min.x); - p.x -= max(0, r.max.x - screen->r.max.x); - p.y -= max(0, r.max.y - screen->brect.min.y - Dy(r)/2); + p.x -= max(0, r.max.x - screens[f->screen]->r.max.x); + p.y -= max(0, r.max.y - screens[f->screen]->brect.min.y - Dy(r)/2); return rectaddpt(r, p); } @@ -75,6 +76,7 @@ framewin(Frame *f, Point pt, int orientation, int n) { sethandler(fw->w, &handlers); fw->f = f; + fw->screen = f->area->screen; fw->grabbox = f->grabbox; frameadjust(fw, pt, orientation, n); reshapewin(fw->w, framerect(fw)); @@ -124,7 +126,6 @@ find_area(Point pt) { int s; v = selview; - /* XXX: Multihead. Check this over. */ for(s=0; s < nscreens; s++) { if(!rect_haspoint_p(pt, screens[s]->r)) continue; @@ -132,7 +133,7 @@ find_area(Point pt) { if(pt.x < a->r.max.x) return a; } - return nil; /* XXX: Multihead. */ + return nil; } static void @@ -149,9 +150,10 @@ vplace(Framewin *fw, Point pt) { a = find_area(pt); if(a == nil) - return; /* XXX: Multihead. */ + return; fw->ra = a; + fw->screen = a->screen; pt.x = a->r.min.x; frameadjust(fw, pt, OHoriz, Dx(a->r)); @@ -202,6 +204,7 @@ hplace(Framewin *fw, Point pt) { if(a == nil) return; /* XXX: Multihead. */ + fw->screen = a->screen; fw->ra = nil; minw = column_minwidth(); if(abs(pt.x - a->r.min.x) < minw/2) {