dwm-savefloats-20160723-56a31dc.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-savefloats-20160723-56a31dc.diff (1452B)
---
1 diff --git a/dwm.c b/dwm.c
2 index cfea881..87a23c4 100644
3 --- a/dwm.c
4 +++ b/dwm.c
5 @@ -107,6 +107,7 @@ struct Client {
6 char name[256];
7 float mina, maxa;
8 int x, y, w, h;
9 + int sfx, sfy, sfw, sfh; /* stored float geometry, used on mode revert */
10 int oldx, oldy, oldw, oldh;
11 int basew, baseh, incw, inch, maxw, maxh, minw, minh;
12 int bw, oldbw;
13 @@ -1205,10 +1206,10 @@ manage(Window w, XWindowAttributes *wa)
14 c = ecalloc(1, sizeof(Client));
15 c->win = w;
16 /* geometry */
17 - c->x = c->oldx = wa->x;
18 - c->y = c->oldy = wa->y;
19 - c->w = c->oldw = wa->width;
20 - c->h = c->oldh = wa->height;
21 + c->sfx = c->x = c->oldx = wa->x;
22 + c->sfy = c->y = c->oldy = wa->y;
23 + c->sfw = c->w = c->oldw = wa->width;
24 + c->sfh = c->h = c->oldh = wa->height;
25 c->oldbw = wa->border_width;
26
27 updatetitle(c);
28 @@ -1976,8 +1977,16 @@ togglefloating(const Arg *arg)
29 return;
30 selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
31 if (selmon->sel->isfloating)
32 - resize(selmon->sel, selmon->sel->x, selmon->sel->y,
33 - selmon->sel->w, selmon->sel->h, 0);
34 + /* restore last know float dimentions */
35 + resize(selmon->sel, selmon->sel->sfx, selmon->sel->sfy,
36 + selmon->sel->sfw, selmon->sel->sfh, 0);
37 + else {
38 + /* save last known float dimentions */
39 + selmon->sel->sfx = selmon->sel->x;
40 + selmon->sel->sfy = selmon->sel->y;
41 + selmon->sel->sfw = selmon->sel->w;
42 + selmon->sel->sfh = selmon->sel->h;
43 + }
44 arrange(selmon);
45 }
46