simplified configurerequest 30d92859
Anselm R. Garbe · 2006-08-29 19:24 1 file(s) · +22 −25
event.c +22 −25
148 148
}
149 149
150 150
static void
151 +
synconfig(Client *c, int x, int y, int w, int h, unsigned int border)
152 +
{
153 +
	XEvent synev;
154 +
155 +
	synev.type = ConfigureNotify;
156 +
	synev.xconfigure.display = dpy;
157 +
	synev.xconfigure.event = c->win;
158 +
	synev.xconfigure.window = c->win;
159 +
	synev.xconfigure.x = x;
160 +
	synev.xconfigure.y = y;
161 +
	synev.xconfigure.width = w;
162 +
	synev.xconfigure.height = h;
163 +
	synev.xconfigure.border_width = border;
164 +
	synev.xconfigure.above = None;
165 +
	XSendEvent(dpy, c->win, True, NoEventMask, &synev);
166 +
}
167 +
168 +
static void
151 169
configurerequest(XEvent *e)
152 170
{
153 171
	unsigned long newmask;
154 172
	Client *c;
155 173
	XConfigureRequestEvent *ev = &e->xconfigurerequest;
156 -
	XEvent synev;
157 174
	XWindowChanges wc;
158 175
159 176
	if((c = getclient(ev->window))) {
160 177
		if(!c->isfloat && (arrange != dofloat) && c->ismax) {
161 -
			synev.type = ConfigureNotify;
162 -
			synev.xconfigure.display = dpy;
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);
178 +
			synconfig(c, sx, sy + bh, sw - 2, sh - 2 - bh, ev->border_width);
179 +
			XSync(dpy, False);
172 180
			return;
173 181
		}
174 182
		gravitate(c, True);
190 198
		newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
191 199
		if(newmask)
192 200
			XConfigureWindow(dpy, c->win, newmask, &wc);
193 -
		else {
194 -
			synev.type = ConfigureNotify;
195 -
			synev.xconfigure.display = dpy;
196 -
			synev.xconfigure.event = c->win;
197 -
			synev.xconfigure.window = c->win;
198 -
			synev.xconfigure.x = c->x;
199 -
			synev.xconfigure.y = c->y;
200 -
			synev.xconfigure.width = c->w;
201 -
			synev.xconfigure.height = c->h;
202 -
			synev.xconfigure.border_width = c->border;
203 -
			synev.xconfigure.above = None;
204 -
			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
205 -
		}
201 +
		else
202 +
			synconfig(c, c->x, c->y, c->w, c->h, c->border);
206 203
		XSync(dpy, False);
207 204
		if(c->isfloat)
208 205
			resize(c, False, TopLeft);