commit bda87f5ea4e0edb6dc5cbf336cd34e3a8de9ec3f
parent dbebda0ef2f48e67df452812b0baa1c63ce21240
Author: Kris Maglione <jg@suckless.org>
Date: Tue, 21 Oct 2008 19:17:16 -0400
Fix column dividers with Xinerama
Diffstat:
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/cmd/wmii/dat.h b/cmd/wmii/dat.h
@@ -193,6 +193,8 @@ struct Client {
struct Divide {
Divide* next;
Window* w;
+ Area* left;
+ Area* right;
bool mapped;
int x;
};
diff --git a/cmd/wmii/div.c b/cmd/wmii/div.c
@@ -50,12 +50,14 @@ unmapdiv(Divide *d) {
void
div_set(Divide *d, int x) {
Rectangle r;
+ int scrn;
+
+ scrn = d->left ? d->left->screen : d->right->screen;
d->x = x;
r = rectaddpt(divimg->r, Pt(x - Dx(divimg->r)/2, 0));
- /* XXX: Multihead. */
- r.min.y = selview->screenr.min.y;
- r.max.y = selview->screenr.max.y;
+ r.min.y = selview->r[scrn].min.y;
+ r.max.y = selview->r[scrn].max.y;
reshapewin(d->w, r);
mapdiv(d);
@@ -117,7 +119,7 @@ update_imgs(void) {
void
div_update_all(void) {
Divide **dp, *d;
- Area *a;
+ Area *a, *ap;
View *v;
int s;
@@ -125,14 +127,20 @@ div_update_all(void) {
v = selview;
dp = &divs;
+ ap = nil;
foreach_column(v, s, a) {
d = getdiv(dp);
dp = &d->next;
+ d->left = ap;
+ d->right = a;
div_set(d, a->r.min.x);
+ ap = a;
if(!a->next) {
d = getdiv(dp);
dp = &d->next;
+ d->left = a;
+ d->right = nil;
div_set(d, a->r.max.x);
}
}
diff --git a/cmd/wmii/mouse.c b/cmd/wmii/mouse.c
@@ -315,22 +315,15 @@ done:
void
mouse_resizecol(Divide *d) {
Window *cwin;
- Divide *dp;
View *v;
Area *a;
Rectangle r;
Point pt;
- int minw, s;
+ int minw;
v = selview;
- dp = divs;
- foreach_column(v, s, a) {
- if(dp->next == d)
- break;
- dp = dp->next;
- }
-
+ a = d->left;
/* Fix later */
if(a == nil || a->next == nil)
return;