Mercurial > aewl
comparison mouse.c @ 26:e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Wed, 12 Jul 2006 15:17:22 +0200 |
parents | 4560e0882c1d |
children | 386649deb651 |
comparison
equal
deleted
inserted
replaced
25:e238dc4844d7 | 26:e8f627998d6f |
---|---|
43 old_cx = c->x; | 43 old_cx = c->x; |
44 old_cy = c->y; | 44 old_cy = c->y; |
45 if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, | 45 if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, |
46 None, cursor[CurResize], CurrentTime) != GrabSuccess) | 46 None, cursor[CurResize], CurrentTime) != GrabSuccess) |
47 return; | 47 return; |
48 XGrabServer(dpy); | |
49 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); | 48 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); |
50 for(;;) { | 49 for(;;) { |
51 XMaskEvent(dpy, MouseMask, &ev); | 50 XMaskEvent(dpy, MouseMask | ExposureMask, &ev); |
52 switch(ev.type) { | 51 switch(ev.type) { |
53 default: break; | 52 default: break; |
53 case Expose: | |
54 handler[Expose](&ev); | |
55 break; | |
54 case MotionNotify: | 56 case MotionNotify: |
55 XUngrabServer(dpy); | 57 XFlush(dpy); |
56 mmatch(c, old_cx, old_cy, ev.xmotion.x, ev.xmotion.y); | 58 mmatch(c, old_cx, old_cy, ev.xmotion.x, ev.xmotion.y); |
57 XResizeWindow(dpy, c->win, c->w, c->h); | 59 XResizeWindow(dpy, c->win, c->w, c->h); |
58 XGrabServer(dpy); | |
59 break; | 60 break; |
60 case ButtonRelease: | 61 case ButtonRelease: |
61 resize(c); | 62 resize(c); |
62 XUngrabServer(dpy); | |
63 XUngrabPointer(dpy, CurrentTime); | 63 XUngrabPointer(dpy, CurrentTime); |
64 return; | 64 return; |
65 } | 65 } |
66 } | 66 } |
67 } | 67 } |
78 old_cy = c->y; | 78 old_cy = c->y; |
79 if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, | 79 if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, |
80 None, cursor[CurMove], CurrentTime) != GrabSuccess) | 80 None, cursor[CurMove], CurrentTime) != GrabSuccess) |
81 return; | 81 return; |
82 XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | 82 XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); |
83 XGrabServer(dpy); | |
84 for(;;) { | 83 for(;;) { |
85 XMaskEvent(dpy, MouseMask, &ev); | 84 XMaskEvent(dpy, MouseMask | ExposureMask, &ev); |
86 switch (ev.type) { | 85 switch (ev.type) { |
87 default: break; | 86 default: break; |
87 case Expose: | |
88 handler[Expose](&ev); | |
89 break; | |
88 case MotionNotify: | 90 case MotionNotify: |
89 XUngrabServer(dpy); | 91 XFlush(dpy); |
90 c->x = old_cx + (ev.xmotion.x - x1); | 92 c->x = old_cx + (ev.xmotion.x - x1); |
91 c->y = old_cy + (ev.xmotion.y - y1); | 93 c->y = old_cy + (ev.xmotion.y - y1); |
92 XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); | 94 XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); |
93 XGrabServer(dpy); | |
94 break; | 95 break; |
95 case ButtonRelease: | 96 case ButtonRelease: |
96 resize(c); | 97 resize(c); |
97 XUngrabServer(dpy); | |
98 XUngrabPointer(dpy, CurrentTime); | 98 XUngrabPointer(dpy, CurrentTime); |
99 return; | 99 return; |
100 } | 100 } |
101 } | 101 } |
102 } | 102 } |