168 configurerequest(XEvent *e) { |
168 configurerequest(XEvent *e) { |
169 Client *c; |
169 Client *c; |
170 XConfigureRequestEvent *ev = &e->xconfigurerequest; |
170 XConfigureRequestEvent *ev = &e->xconfigurerequest; |
171 XWindowChanges wc; |
171 XWindowChanges wc; |
172 |
172 |
173 wc.x = ev->x; |
|
174 wc.y = ev->y; |
|
175 wc.width = ev->width; |
|
176 wc.height = ev->height; |
|
177 wc.border_width = ev->border_width; |
|
178 wc.sibling = ev->above; |
|
179 wc.stack_mode = ev->detail; |
|
180 if((c = getclient(ev->window))) { |
173 if((c = getclient(ev->window))) { |
181 c->ismax = False; |
174 c->ismax = False; |
182 if(ev->value_mask & CWBorderWidth) |
175 c->border = (ev->value_mask & CWBorderWidth) ? ev->border_width : c->border; |
183 c->border = ev->border_width; |
|
184 if((!c->isfloat && (arrange != dofloat)) |
176 if((!c->isfloat && (arrange != dofloat)) |
185 || ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))) |
177 || ((ev->value_mask & (CWX | CWY)) && !(ev->value_mask & (CWWidth | CWHeight)))) |
186 { |
|
187 configure(c); |
178 configure(c); |
188 XSync(dpy, False); |
179 else { |
189 return; |
180 c->x = (ev->value_mask & CWX) ? ev->x : c->x; |
190 } |
181 c->y = (ev->value_mask & CWY) ? ev->y : c->y; |
191 } |
182 c->w = (ev->value_mask & CWWidth) ? ev->width : c->w; |
192 XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); |
183 c->h = (ev->value_mask & CWHeight) ? ev->height : c->h; |
193 if(c && !isvisible(c)) |
184 resize(c, False); |
194 XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); |
185 if(!isvisible(c)) |
|
186 XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); |
|
187 } |
|
188 } |
|
189 else { |
|
190 wc.x = ev->x; |
|
191 wc.y = ev->y; |
|
192 wc.width = ev->width; |
|
193 wc.height = ev->height; |
|
194 wc.border_width = ev->border_width; |
|
195 wc.sibling = ev->above; |
|
196 wc.stack_mode = ev->detail; |
|
197 XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); |
|
198 } |
195 XSync(dpy, False); |
199 XSync(dpy, False); |
196 } |
200 } |
197 |
201 |
198 static void |
202 static void |
199 destroynotify(XEvent *e) { |
203 destroynotify(XEvent *e) { |