equal
deleted
inserted
replaced
148 } |
148 } |
149 |
149 |
150 static void |
150 static void |
151 configurerequest(XEvent *e) |
151 configurerequest(XEvent *e) |
152 { |
152 { |
153 int ox, oy, ow, oh; |
|
154 unsigned long newmask; |
153 unsigned long newmask; |
155 Client *c; |
154 Client *c; |
156 XConfigureRequestEvent *ev = &e->xconfigurerequest; |
155 XConfigureRequestEvent *ev = &e->xconfigurerequest; |
157 XEvent synev; |
156 XEvent synev; |
158 XWindowChanges wc; |
157 XWindowChanges wc; |
159 |
158 |
160 if((c = getclient(ev->window))) { |
159 if((c = getclient(ev->window))) { |
161 ox = c->x; |
160 if(!c->isfloat && (arrange != dofloat) && c->ismax) { |
162 oy = c->y; |
161 synev.type = ConfigureNotify; |
163 ow = c->w; |
162 synev.xconfigure.display = dpy; |
164 oh = c->h; |
163 synev.xconfigure.event = c->win; |
|
164 synev.xconfigure.window = c->win; |
|
165 synev.xconfigure.x = sx; |
|
166 synev.xconfigure.y = sy + bh; |
|
167 synev.xconfigure.width = sw - 2; |
|
168 synev.xconfigure.height = sw - 2 - bh; |
|
169 synev.xconfigure.border_width = ev->border_width; |
|
170 synev.xconfigure.above = None; |
|
171 XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
|
172 return; |
|
173 } |
165 gravitate(c, True); |
174 gravitate(c, True); |
166 if(ev->value_mask & CWX) |
175 if(ev->value_mask & CWX) |
167 c->x = ev->x; |
176 c->x = ev->x; |
168 if(ev->value_mask & CWY) |
177 if(ev->value_mask & CWY) |
169 c->y = ev->y; |
178 c->y = ev->y; |
190 synev.xconfigure.y = c->y; |
199 synev.xconfigure.y = c->y; |
191 synev.xconfigure.width = c->w; |
200 synev.xconfigure.width = c->w; |
192 synev.xconfigure.height = c->h; |
201 synev.xconfigure.height = c->h; |
193 synev.xconfigure.border_width = c->border; |
202 synev.xconfigure.border_width = c->border; |
194 synev.xconfigure.above = None; |
203 synev.xconfigure.above = None; |
195 /* Send synthetic ConfigureNotify */ |
|
196 XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
204 XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
197 } |
205 } |
198 XSync(dpy, False); |
206 XSync(dpy, False); |
199 if(c->isfloat) |
207 if(c->isfloat) |
200 resize(c, False, TopLeft); |
208 resize(c, False, TopLeft); |
201 else if(c->ismax) { |
|
202 resize(c, False, TopLeft); |
|
203 c->x = ox; |
|
204 c->y = oy; |
|
205 c->w = ow; |
|
206 c->h = oh; |
|
207 } |
|
208 else |
209 else |
209 arrange(NULL); |
210 arrange(NULL); |
210 } |
211 } |
211 else { |
212 else { |
212 wc.x = ev->x; |
213 wc.x = ev->x; |