wmii

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

commit 142661719a15d3f495178d85053633fc4266fbc5
parent 3636937420c723c47cc0d0b0b8c1515ca0f409f5
Author: Kris Maglione <jg@suckless.org>
Date:   Tue,  9 Dec 2008 21:19:05 -0500

Allow basic moving of windows between Xinerama screens with the keyboard.

Diffstat:
cmd/wmii/frame.c | 1+
cmd/wmii/message.c | 23+++++++++++++++--------
2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/cmd/wmii/frame.c b/cmd/wmii/frame.c @@ -321,6 +321,7 @@ frame_rect2client(Client *c, Rectangle r, bool floating) { ADJ(+=, -=) + /* Force clients to be at least 1x1 */ r.max.x = max(r.max.x, r.min.x+1); r.max.y = max(r.max.y, r.min.y+1); return r; diff --git a/cmd/wmii/message.c b/cmd/wmii/message.c @@ -945,7 +945,7 @@ msg_selectframe(Area *a, IxpMsg *m, int sym) { char* msg_sendclient(View *v, IxpMsg *m, bool swap) { Area *to, *a; - Frame *f; + Frame *f, *ff; Client *c; char *s; ulong i; @@ -975,15 +975,11 @@ msg_sendclient(View *v, IxpMsg *m, bool swap) { case LLEFT: if(a->floating) return Ebadvalue; - /* XXX: Multihead. */ - if(a->prev) - to = a->prev; - a = nil; + to = a->prev; break; case LRIGHT: if(a->floating) return Ebadvalue; - /* XXX: Multihead. */ to = a->next; break; case LTOGGLE: @@ -1006,8 +1002,19 @@ msg_sendclient(View *v, IxpMsg *m, bool swap) { break; } - if(!to && !swap && (f->anext || f != f->area->frame)) - to = column_new(v, a, f->area->screen, 0); + if(!to && !swap) { + /* XXX: Multihead - clean this up, move elsewhere. */ + if(!f->anext && f == f->area->frame) { + ff = f; + to = a; + if(!find(&to, &ff, DIR(sym), false, false)) + return Ebadvalue; + } + else { + to = (sym == LLEFT) ? nil : a; + to = column_new(v, to, a->screen, 0); + } + } if(!to) return Ebadvalue;