about summary refs log tree commit diff stats
path: root/client.c
diff options
context:
space:
mode:
authorarg@10ksloc.org <unknown>2006-07-20 15:07:35 +0200
committerarg@10ksloc.org <unknown>2006-07-20 15:07:35 +0200
commit4688ad181da14be36e034918580ec0ce5968ffdb (patch)
treee919b8e6e89400a8b5dac01fa611090f139d5b5f /client.c
parentdc5d967ee61046f899b3b49daeb9268c8161844a (diff)
downloaddwm-4688ad181da14be36e034918580ec0ce5968ffdb.tar.gz
made status bar drawing more robust, implemented togglemax and togglemode, works quite well
Diffstat (limited to 'client.c')
-rw-r--r--client.c53
1 files changed, 38 insertions, 15 deletions
diff --git a/client.c b/client.c
index 889daa5..1bdebd2 100644
--- a/client.c
+++ b/client.c
@@ -70,6 +70,9 @@ focusnext(Arg *arg)
 	if(!sel)
 		return;
 
+	if(sel->ismax)
+		togglemax(NULL);
+
 	if(!(c = getnext(sel->next, tsel)))
 		c = getnext(clients, tsel);
 	if(c) {
@@ -87,6 +90,9 @@ focusprev(Arg *arg)
 	if(!sel)
 		return;
 
+	if(sel->ismax)
+		togglemax(NULL);
+
 	if((c = sel->revert && sel->revert->tags[tsel] ? sel->revert : NULL)) {
 		higher(c);
 		focus(c);
@@ -234,8 +240,6 @@ manage(Window w, XWindowAttributes *wa)
 	c->next = clients;
 	clients = c;
 
-	XGrabButton(dpy, Button1, ControlMask, c->win, False, ButtonPressMask,
-			GrabModeAsync, GrabModeSync, None, None);
 	XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonPressMask,
 			GrabModeAsync, GrabModeSync, None, None);
 	XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask,
@@ -264,19 +268,6 @@ manage(Window w, XWindowAttributes *wa)
 }
 
 void
-maximize(Arg *arg)
-{
-	if(!sel)
-		return;
-	sel->x = sx;
-	sel->y = sy + bh;
-	sel->w = sw - 2 * sel->border;
-	sel->h = sh - 2 * sel->border - bh;
-	higher(sel);
-	resize(sel, False, TopLeft);
-}
-
-void
 pop(Client *c)
 {
 	Client **l;
@@ -405,6 +396,38 @@ settitle(Client *c)
 }
 
 void
+togglemax(Arg *arg)
+{
+	int ox, oy, ow, oh;
+	XEvent ev;
+
+	if(!sel)
+		return;
+
+	if((sel->ismax = !sel->ismax)) {
+		ox = sel->x;
+		oy = sel->y;
+		ow = sel->w;
+		oh = sel->h;
+		sel->x = sx;
+		sel->y = sy + bh;
+		sel->w = sw - 2 * sel->border;
+		sel->h = sh - 2 * sel->border - bh;
+
+		higher(sel);
+		resize(sel, False, TopLeft);
+
+		sel->x = ox;
+		sel->y = oy;
+		sel->w = ow;
+		sel->h = oh;
+	}
+	else
+		resize(sel, False, TopLeft);
+	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
+}
+
+void
 unmanage(Client *c)
 {
 	Client **l;