commit 962d2784f06c5697314211a5eb49ded3ecfc67bb
parent 054a356d003ea967cdb185e3b5c3a070d0feb550
Author: Kris Maglione <jg@suckless.org>
Date: Fri, 23 May 2008 19:51:56 -0400
See diff.
Diffstat:
5 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/cmd/wmii.rc.rc b/cmd/wmii.rc.rc
@@ -121,6 +121,8 @@ fn wi_runcmd { @{
if(~ $1 -t) {
shift
* = (wihack -tags `{wmiir read /tag/sel/ctl | sed 1q} $*) }
+ fn `{env | 9 sed -n 's/^fn#([^=]+).*/\1/p'}
+ mykeys=()
eval exec $* & }
}
diff --git a/cmd/wmii/column.c b/cmd/wmii/column.c
@@ -428,7 +428,8 @@ column_arrange(Area *a, bool dirty) {
column_scale(a);
resize:
if(v == screen->sel) {
- view_restack(v);
+ //view_restack(v);
+ client_resize(a->sel->client, a->sel->r);
for(f=a->frame; f; f=f->anext)
client_resize(f->client, f->r);
}
diff --git a/cmd/wmii/layout.c b/cmd/wmii/layout.c
@@ -138,7 +138,7 @@ vplace(Framewin *fw, Point pt) {
r = fw->w->r;
hr = Dy(r)/2;
- fw->xy = pt.y;
+ pt.y -= hr;
if(a->frame == nil)
goto done;
@@ -151,14 +151,14 @@ vplace(Framewin *fw, Point pt) {
vector_lpush(&vec, f->r.min.y + 1*hr);
else
vector_lpush(&vec, f->r.min.y + 2*hr);
- if(!f->collapsed)
+ if(!f->collapsed && f->anext != fw->f)
vector_lpush(&vec, f->r.max.y - 2*hr);
}
for(int i=0; i < vec.n; i++) {
l = vec.ary[i];
- if(abs(fw->xy - l) < hr) {
- fw->xy = l;
+ if(abs(pt.y - l) < hr) {
+ pt.y = l;
break;
}
}
@@ -166,7 +166,6 @@ vplace(Framewin *fw, Point pt) {
done:
pt.x = a->r.min.x;
- pt.y = fw->xy;
frameadjust(fw, pt, OHoriz, Dx(a->r));
reshapewin(fw->w, framerect(fw));
}
@@ -239,8 +238,6 @@ trampoline(int fn, Frame *f) {
fn = tramp[fn](f);
}
ungrabpointer();
-
- warppointer(grabboxcenter(f));
}
void
@@ -249,15 +246,20 @@ mouse_movegrabbox(Client *c) {
int incmode;
f = c->sel;
+
incmode = def.incmode;
def.incmode = IShow;
view_update(f->view);
+ warppointer(grabboxcenter(f));
+
if(f->area->floating)
trampoline(TFloat, f);
else
trampoline(THCol, f);
+
def.incmode = incmode;
view_update(f->view);
+ warppointer(grabboxcenter(f));
}
static int
@@ -377,7 +379,6 @@ thcol(Frame *f) {
if(!grabpointer(&scr.root, nil, cursor[CurIcon], MouseMask))
goto done;
- warppointer(pt);
vplace(fw, pt);
for(;;)
switch (readmouse(&pt, &button)) {
diff --git a/cmd/wmii/mouse.c b/cmd/wmii/mouse.c
@@ -491,9 +491,7 @@ mouse_tempvertresize(Area *a, Point p) {
if(!grabpointer(&scr.root, cwin, cursor[CurDVArrow], MouseMask))
goto done;
- int amin = fa->colr.min.y;
while(readmotion(&p)) {
- fa->colr.min.y = amin;
fa->colr.max.y = p.y;
fb->colr.min.y = p.y + dy;
column_arrange(a, false);
diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c
@@ -884,6 +884,17 @@ pointerscreen(void) {
void
warppointer(Point pt) {
+ /* Nasty kludge for xephyr, xnest. */
+ static int havereal = -1;
+ static char* real;
+
+ if(havereal == -1) {
+ real = getenv("REALDISPLAY");
+ havereal = real != nil;
+ }
+ if(havereal)
+ system(sxprint("DISPLAY=%s wiwarp %d %d", real, pt.x, pt.y));
+
XWarpPointer(display,
/* src, dest w */ None, scr.root.w,
/* src_rect */ 0, 0, 0, 0,