RCarter wrote:
> This page: http://www.suckless.org/wiki/dwm/patches/save_floates.html
> says about the save_floats patch: "Recently it became part of the main
> distribution of dwm"
> 
> I'm just switching to 5.1, and have never used this functionality before.
> I don't think its working.

I hope this works for you.

Regards
Matthias-Christian
changeset:   1317:fb2962745512
user:        Matthias-Christian Ott <[EMAIL PROTECTED]>
date:        Sun Jul 20 19:55:35 2008 +0200
summary:     save floating dimensions

diff -r df74a88a2d44 -r fb2962745512 dwm.c
--- a/dwm.c	Sun Jul 20 19:16:33 2008 +0200
+++ b/dwm.c	Sun Jul 20 19:55:35 2008 +0200
@@ -85,6 +85,7 @@ struct Client {
 	char name[256];
 	float mina, maxa;
 	int x, y, w, h;
+	int sx, sy, sw, sh;
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int bw, oldbw;
 	unsigned int tags;
@@ -274,7 +275,9 @@ arrange(void) {
 	for(c = clients; c; c = c->next)
 		if(ISVISIBLE(c)) {
 			XMoveWindow(dpy, c->win, c->x, c->y);
-			if(!lt[sellt]->arrange || c->isfloating)
+			if(!lt[sellt]->arrange && !c->isfloating)
+				resize(c, c->sx, c->sy, c->sw, c->sh, True);
+			else if (c->isfloating)
 				resize(c, c->x, c->y, c->w, c->h, True);
 		}
 		else {
@@ -912,6 +915,10 @@ manage(Window w, XWindowAttributes *wa) 
 	XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
 	configure(c); /* propagates border_width, if size doesn't change */
 	updatesizehints(c);
+	c->sx = c->x;
+	c->sy = c->y;
+	c->sw = c->w;
+	c->sh = c->h;
 	XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
 	grabbuttons(c, False);
 	updatetitle(c);
@@ -1117,6 +1124,12 @@ resize(Client *c, int x, int y, int w, i
 		c->y = wc.y = y;
 		c->w = wc.width = w;
 		c->h = wc.height = h;
+		if (!lt[sellt]->arrange || c->isfloating) {
+			c->sx = x;
+			c->sy = y;
+			c->sw = w;
+			c->sh = h;
+		}
 		wc.border_width = c->bw;
 		XConfigureWindow(dpy, c->win,
 				CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
@@ -1480,7 +1493,13 @@ togglefloating(const Arg *arg) {
 		return;
 	sel->isfloating = !sel->isfloating || sel->isfixed;
 	if(sel->isfloating)
-		resize(sel, sel->x, sel->y, sel->w, sel->h, True);
+		resize(sel, sel->sx, sel->sy, sel->sw, sel->sh, True);
+	else {
+		sel->sx = sel->x;
+		sel->sy = sel->y;
+		sel->sw = sel->w;
+		sel->sh = sel->h;
+	}
 	arrange();
 }
 

Reply via email to