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:
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;