now dwm enforces max screen size also in tiled mode on non-floating clients which are maximized 70a3e622
Anselm R. Garbe · 2006-08-29 18:05 1 file(s) · +14 −13
event.c +14 −13
150 150
static void
151 151
configurerequest(XEvent *e)
152 152
{
153 -
	int ox, oy, ow, oh;
154 153
	unsigned long newmask;
155 154
	Client *c;
156 155
	XConfigureRequestEvent *ev = &e->xconfigurerequest;
158 157
	XWindowChanges wc;
159 158
160 159
	if((c = getclient(ev->window))) {
161 -
		ox = c->x;
162 -
		oy = c->y;
163 -
		ow = c->w;
164 -
		oh = c->h;
160 +
		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);
172 +
			return;
173 +
		}
165 174
		gravitate(c, True);
166 175
		if(ev->value_mask & CWX)
167 176
			c->x = ev->x;
192 201
			synev.xconfigure.height = c->h;
193 202
			synev.xconfigure.border_width = c->border;
194 203
			synev.xconfigure.above = None;
195 -
			/* Send synthetic ConfigureNotify */
196 204
			XSendEvent(dpy, c->win, True, NoEventMask, &synev);
197 205
		}
198 206
		XSync(dpy, False);
199 207
		if(c->isfloat)
200 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 209
		else
209 210
			arrange(NULL);
210 211
	}