commit a3a6dd6c9f9a6aedb40095098cc197c54c078bf2
parent 7b6172551003a61b1382502606ffd11b845442a8
Author: Kris Maglione <jg@suckless.org>
Date: Fri, 2 Oct 2009 02:48:25 -0400
Fix scrolling across Xinerama screens via keyboard. Fixes issue #126.
Diffstat:
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/cmd/wmii/screen.c b/cmd/wmii/screen.c
@@ -81,16 +81,13 @@ findscreen(Rectangle rect, int direction) {
static Rectangle
leastthing(Rectangle rect, int direction, Vector_ptr *vec, Rectangle (*key)(void*)) {
- void *p;
Rectangle r;
- Point pt;
int i, best, d;
SET(d);
SET(best);
for(i=0; i < vec->n; i++) {
- p = vec->ary[i];
- r = key(p);
+ r = key(vec->ary[i]);
switch(direction) {
case South: d = r.min.y; break;
case North: d = -r.max.y; break;
@@ -100,14 +97,13 @@ leastthing(Rectangle rect, int direction, Vector_ptr *vec, Rectangle (*key)(void
if(i == 0 || d < best)
best = d;
}
- pt = rect.min;
switch(direction) {
- case South: pt.y = best - Dy(rect); break;
- case North: pt.y = -best + Dy(rect); break;
- case East: pt.x = best - Dy(rect); break;
- case West: pt.x = -best + Dy(rect); break;
+ case South: rect.min.y = rect.max.y = best; break;
+ case North: rect.min.y = rect.max.y = -best; break;
+ case East: rect.min.x = rect.max.x = best; break;
+ case West: rect.min.x = rect.max.x = -best; break;
}
- return rectsetorigin(rect, pt);
+ return rect;
}
void*