154 XWindowChanges wc; |
154 XWindowChanges wc; |
155 unsigned long newmask; |
155 unsigned long newmask; |
156 |
156 |
157 if((c = getclient(ev->window))) { |
157 if((c = getclient(ev->window))) { |
158 gravitate(c, True); |
158 gravitate(c, True); |
159 if(c->isfloat) { |
159 if(ev->value_mask & CWX) |
160 if(ev->value_mask & CWX) |
160 c->x = ev->x; |
161 c->x = ev->x; |
161 if(ev->value_mask & CWY) |
162 if(ev->value_mask & CWY) |
162 c->y = ev->y; |
163 c->y = ev->y; |
163 if(ev->value_mask & CWWidth) |
164 if(ev->value_mask & CWWidth) |
164 c->w = ev->width; |
165 c->w = ev->width; |
165 if(ev->value_mask & CWHeight) |
166 if(ev->value_mask & CWHeight) |
166 c->h = ev->height; |
167 c->h = ev->height; |
|
168 } |
|
169 if(ev->value_mask & CWBorderWidth) |
167 if(ev->value_mask & CWBorderWidth) |
170 c->border = ev->border_width; |
168 c->border = ev->border_width; |
171 gravitate(c, False); |
169 gravitate(c, False); |
172 |
|
173 resize(c, True, TopLeft); |
|
174 |
|
175 wc.x = c->x; |
170 wc.x = c->x; |
176 wc.y = c->y; |
171 wc.y = c->y; |
177 wc.width = c->w; |
172 wc.width = c->w; |
178 wc.height = c->h; |
173 wc.height = c->h; |
179 newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); |
174 newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); |
191 synev.xconfigure.border_width = c->border; |
186 synev.xconfigure.border_width = c->border; |
192 synev.xconfigure.above = None; |
187 synev.xconfigure.above = None; |
193 /* Send synthetic ConfigureNotify */ |
188 /* Send synthetic ConfigureNotify */ |
194 XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
189 XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
195 } |
190 } |
|
191 XSync(dpy, False); |
|
192 arrange(NULL); |
|
193 drawall(); |
196 } |
194 } |
197 else { |
195 else { |
198 wc.x = ev->x; |
196 wc.x = ev->x; |
199 wc.y = ev->y; |
197 wc.y = ev->y; |
200 wc.width = ev->width; |
198 wc.width = ev->width; |
201 wc.height = ev->height; |
199 wc.height = ev->height; |
202 wc.border_width = ev->border_width; |
200 wc.border_width = ev->border_width; |
203 wc.sibling = ev->above; |
201 wc.sibling = ev->above; |
204 wc.stack_mode = ev->detail; |
202 wc.stack_mode = ev->detail; |
205 XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); |
203 XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); |
206 } |
204 XSync(dpy, False); |
207 XSync(dpy, False); |
205 } |
208 } |
206 } |
209 |
207 |
210 static void |
208 static void |
211 destroynotify(XEvent *e) |
209 destroynotify(XEvent *e) |
212 { |
210 { |