Mercurial > dwm-meillo
comparison event.c @ 491:12395ef46d97
added configure(), but this doesn't really fix those frking broken SDL apps
author | arg@mmvi |
---|---|
date | Tue, 26 Sep 2006 07:40:19 +0200 |
parents | 303d3384720e |
children | 5df494262dfd |
comparison
equal
deleted
inserted
replaced
490:303d3384720e | 491:12395ef46d97 |
---|---|
1 #include <stdio.h> | |
1 /* | 2 /* |
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | 3 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> |
3 * See LICENSE file for license details. | 4 * See LICENSE file for license details. |
4 */ | 5 */ |
5 #include "dwm.h" | 6 #include "dwm.h" |
36 XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | 37 XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); |
37 for(;;) { | 38 for(;;) { |
38 XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | 39 XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); |
39 switch (ev.type) { | 40 switch (ev.type) { |
40 case ButtonRelease: | 41 case ButtonRelease: |
42 resize(c, True, TopLeft); | |
41 XUngrabPointer(dpy, CurrentTime); | 43 XUngrabPointer(dpy, CurrentTime); |
42 return; | 44 return; |
43 case Expose: | 45 case Expose: |
44 handler[Expose](&ev); | 46 handler[Expose](&ev); |
45 break; | 47 break; |
69 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); | 71 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); |
70 for(;;) { | 72 for(;;) { |
71 XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | 73 XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); |
72 switch(ev.type) { | 74 switch(ev.type) { |
73 case ButtonRelease: | 75 case ButtonRelease: |
76 resize(c, True, TopLeft); | |
74 XUngrabPointer(dpy, CurrentTime); | 77 XUngrabPointer(dpy, CurrentTime); |
75 return; | 78 return; |
76 case Expose: | 79 case Expose: |
77 handler[Expose](&ev); | 80 handler[Expose](&ev); |
78 break; | 81 break; |
149 Client *c; | 152 Client *c; |
150 XConfigureRequestEvent *ev = &e->xconfigurerequest; | 153 XConfigureRequestEvent *ev = &e->xconfigurerequest; |
151 XEvent synev; | 154 XEvent synev; |
152 XWindowChanges wc; | 155 XWindowChanges wc; |
153 | 156 |
157 fputs("configurerequest\n", stderr); | |
154 if((c = getclient(ev->window))) { | 158 if((c = getclient(ev->window))) { |
155 c->ismax = False; | 159 c->ismax = False; |
156 gravitate(c, True); | 160 gravitate(c, True); |
157 if(ev->value_mask & CWX) | 161 if(ev->value_mask & CWX) |
158 c->x = ev->x; | 162 c->x = ev->x; |
170 wc.width = c->w; | 174 wc.width = c->w; |
171 wc.height = c->h; | 175 wc.height = c->h; |
172 newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); | 176 newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); |
173 if(newmask) | 177 if(newmask) |
174 XConfigureWindow(dpy, c->win, newmask, &wc); | 178 XConfigureWindow(dpy, c->win, newmask, &wc); |
175 else { | 179 else |
176 synev.type = ConfigureNotify; | 180 configure(c); |
177 synev.xconfigure.display = dpy; | |
178 synev.xconfigure.event = c->win; | |
179 synev.xconfigure.window = c->win; | |
180 synev.xconfigure.x = c->x; | |
181 synev.xconfigure.y = c->y; | |
182 synev.xconfigure.width = c->w; | |
183 synev.xconfigure.height = c->h; | |
184 synev.xconfigure.border_width = c->border; | |
185 synev.xconfigure.above = None; | |
186 XSendEvent(dpy, c->win, True, NoEventMask, &synev); | |
187 } | |
188 XSync(dpy, False); | 181 XSync(dpy, False); |
189 if(c->isfloat) | 182 if(c->isfloat) |
190 resize(c, False, TopLeft); | 183 resize(c, False, TopLeft); |
191 else | 184 else |
192 arrange(NULL); | 185 arrange(NULL); |
216 static void | 209 static void |
217 enternotify(XEvent *e) { | 210 enternotify(XEvent *e) { |
218 Client *c; | 211 Client *c; |
219 XCrossingEvent *ev = &e->xcrossing; | 212 XCrossingEvent *ev = &e->xcrossing; |
220 | 213 |
214 fputs("enternotify\n", stderr); | |
221 if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) | 215 if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) |
222 return; | 216 return; |
223 | 217 |
224 if(((c = getclient(ev->window)) || (c = getctitle(ev->window))) && isvisible(c)) | 218 if(((c = getclient(ev->window)) || (c = getctitle(ev->window))) && isvisible(c)) |
225 focus(c); | 219 focus(c); |
303 propertynotify(XEvent *e) { | 297 propertynotify(XEvent *e) { |
304 Client *c; | 298 Client *c; |
305 Window trans; | 299 Window trans; |
306 XPropertyEvent *ev = &e->xproperty; | 300 XPropertyEvent *ev = &e->xproperty; |
307 | 301 |
302 fputs("propertynotify\n", stderr); | |
308 if(ev->state == PropertyDelete) | 303 if(ev->state == PropertyDelete) |
309 return; /* ignore */ | 304 return; /* ignore */ |
310 | 305 |
311 if((c = getclient(ev->window))) { | 306 if((c = getclient(ev->window))) { |
312 if(ev->atom == wmatom[WMProtocols]) { | 307 if(ev->atom == wmatom[WMProtocols]) { |