about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAnselm R Garbe <anselm@garbe.us>2009-06-23 19:00:32 +0100
committerAnselm R Garbe <anselm@garbe.us>2009-06-23 19:00:32 +0100
commitfa5ae54bbb7f890540f4700809e00497018e0239 (patch)
tree1744d8df6cb1388742d490b84ef87ca9c7cd3db2
parent7de534192cb53e595f8e29bd9757518b2d9e8860 (diff)
downloaddwm-fa5ae54bbb7f890540f4700809e00497018e0239.tar.gz
added some dual head simulator code
-rw-r--r--dwm.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/dwm.c b/dwm.c
index fbda0bb..88e0b1b 100644
--- a/dwm.c
+++ b/dwm.c
@@ -1,3 +1,4 @@
+#define XINULATOR /* debug, simulates dual head */
 /* See LICENSE file for copyright and license details.
  *
  * dynamic window manager is designed like any other X client as well. It is
@@ -1158,7 +1159,6 @@ movemouse(const Arg *arg) {
 
 Client *
 nexttiled(Client *c) {
-	// TODO: m handling
 	for(; c && (c->isfloating || !ISVISIBLE(c)); c = c->next);
 	return c;
 }
@@ -1593,8 +1593,10 @@ unmanage(Client *c) {
 	XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
 	detach(c);
 	detachstack(c);
-	if(selmon->sel == c)
+	if(c->mon->sel == c) {
+		c->mon->sel = c->mon->stack;
 		focus(NULL);
+	}
 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
 	setclientstate(c, WithdrawnState);
 	free(c);
@@ -1651,7 +1653,9 @@ updategeom(void) {
 	Client *c;
 	Monitor *newmons = NULL, *m, *tm;
 
-#ifdef XINERAMA
+#ifdef XINULATOR
+	n = 2;
+#elif defined(XINERAMA)
 	XineramaScreenInfo *info = NULL;
 
 	if(XineramaIsActive(dpy))
@@ -1665,7 +1669,23 @@ updategeom(void) {
 	}
 
 	/* initialise monitor(s) */
-#ifdef XINERAMA
+#ifdef XINULATOR
+	if(1) {
+		m = newmons;
+		m->screen_number = 0;
+		m->wx = sx;
+		m->my = m->wy = sy;
+		m->ww = sw;
+		m->mh = m->wh = sh / 2;
+		m = newmons->next;
+		m->screen_number = 1;
+		m->wx = sx;
+		m->my = m->wy = sy + sh / 2;
+		m->ww = sw;
+		m->mh = m->wh = sh / 2;
+	}
+	else
+#elif defined(XINERAMA)
 	if(XineramaIsActive(dpy)) {
 		for(i = 0, m = newmons; m; m = m->next, i++) {
 			m->screen_number = info[i].screen_number;