Mercurial > dwm-meillo
comparison event.c @ 386:58288246d16c
now dwm enforces max screen size also in tiled mode on non-floating clients which are maximized
author | Anselm R. Garbe <arg@10kloc.org> |
---|---|
date | Tue, 29 Aug 2006 18:05:02 +0200 |
parents | 37706ba7d492 |
children | dca6aca09653 |
comparison
equal
deleted
inserted
replaced
385:37706ba7d492 | 386:58288246d16c |
---|---|
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; |