68 c->win = w; |
68 c->win = w; |
69 c->r[RFloat].x = wa->x; |
69 c->r[RFloat].x = wa->x; |
70 c->r[RFloat].y = wa->y; |
70 c->r[RFloat].y = wa->y; |
71 c->r[RFloat].width = wa->width; |
71 c->r[RFloat].width = wa->width; |
72 c->r[RFloat].height = wa->height; |
72 c->r[RFloat].height = wa->height; |
73 c->border = wa->border_width; |
73 XSetWindowBorderWidth(dpy, c->win, 1); |
74 XSetWindowBorderWidth(dpy, c->win, 0); |
|
75 XSelectInput(dpy, c->win, CLIENT_MASK); |
74 XSelectInput(dpy, c->win, CLIENT_MASK); |
76 XGetTransientForHint(dpy, c->win, &c->trans); |
75 XGetTransientForHint(dpy, c->win, &c->trans); |
77 if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) |
76 if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) |
78 c->size.flags = PSize; |
77 c->size.flags = PSize; |
79 c->fixedsize = |
78 c->fixedsize = |
95 c->next = *l; /* *l == nil */ |
94 c->next = *l; /* *l == nil */ |
96 *l = c; |
95 *l = c; |
97 c->snext = stack; |
96 c->snext = stack; |
98 stack = c; |
97 stack = c; |
99 XMapWindow(dpy, c->win); |
98 XMapWindow(dpy, c->win); |
100 XGrabButton(dpy, AnyButton, Mod1Mask, c->win, False, ButtonPressMask, |
99 XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, |
|
100 GrabModeAsync, GrabModeSync, None, None); |
|
101 XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, |
|
102 GrabModeAsync, GrabModeSync, None, None); |
|
103 XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, |
101 GrabModeAsync, GrabModeSync, None, None); |
104 GrabModeAsync, GrabModeSync, None, None); |
102 focus(c); |
105 focus(c); |
103 } |
106 } |
104 |
107 |
105 void |
108 void |
114 e.window = c->win; |
117 e.window = c->win; |
115 e.x = c->r[RFloat].x; |
118 e.x = c->r[RFloat].x; |
116 e.y = c->r[RFloat].y; |
119 e.y = c->r[RFloat].y; |
117 e.width = c->r[RFloat].width; |
120 e.width = c->r[RFloat].width; |
118 e.height = c->r[RFloat].height; |
121 e.height = c->r[RFloat].height; |
119 e.border_width = c->border; |
122 e.border_width = 0; |
120 e.above = None; |
123 e.above = None; |
121 e.override_redirect = False; |
124 e.override_redirect = False; |
122 XSelectInput(dpy, c->win, CLIENT_MASK & ~StructureNotifyMask); |
125 XSelectInput(dpy, c->win, CLIENT_MASK & ~StructureNotifyMask); |
123 XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); |
126 XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); |
124 XSelectInput(dpy, c->win, CLIENT_MASK); |
127 XSelectInput(dpy, c->win, CLIENT_MASK); |