simplified mouse resizals
bcb07de7
1 file(s) · +16 −43
| 21 | 21 | #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) |
|
| 22 | 22 | ||
| 23 | 23 | static void |
|
| 24 | - | synconfig(Client *c, int x, int y, int w, int h, unsigned int border) { |
|
| 25 | - | XEvent synev; |
|
| 26 | - | ||
| 27 | - | synev.type = ConfigureNotify; |
|
| 28 | - | synev.xconfigure.display = dpy; |
|
| 29 | - | synev.xconfigure.event = c->win; |
|
| 30 | - | synev.xconfigure.window = c->win; |
|
| 31 | - | synev.xconfigure.x = x; |
|
| 32 | - | synev.xconfigure.y = y; |
|
| 33 | - | synev.xconfigure.width = w; |
|
| 34 | - | synev.xconfigure.height = h; |
|
| 35 | - | synev.xconfigure.border_width = border; |
|
| 36 | - | synev.xconfigure.above = None; |
|
| 37 | - | XSendEvent(dpy, c->win, True, NoEventMask, &synev); |
|
| 38 | - | } |
|
| 39 | - | ||
| 40 | - | static void |
|
| 41 | 24 | movemouse(Client *c) { |
|
| 42 | 25 | int x1, y1, ocx, ocy, di; |
|
| 43 | 26 | unsigned int dui; |
|
| 52 | 35 | c->ismax = False; |
|
| 53 | 36 | XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); |
|
| 54 | 37 | for(;;) { |
|
| 55 | - | XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev); |
|
| 38 | + | XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); |
|
| 56 | 39 | switch (ev.type) { |
|
| 57 | - | default: |
|
| 58 | - | break; |
|
| 59 | - | case ConfigureRequest: |
|
| 60 | - | synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width); |
|
| 61 | - | XSync(dpy, False); |
|
| 62 | - | break; |
|
| 63 | 40 | case Expose: |
|
| 64 | 41 | handler[Expose](&ev); |
|
| 65 | 42 | break; |
|
| 71 | 48 | break; |
|
| 72 | 49 | case ButtonRelease: |
|
| 73 | 50 | XUngrabPointer(dpy, CurrentTime); |
|
| 74 | - | return; |
|
| 75 | - | case DestroyNotify: |
|
| 76 | - | case UnmapNotify: |
|
| 77 | - | XUngrabPointer(dpy, CurrentTime); |
|
| 78 | - | handler[ev.type](&ev); |
|
| 79 | 51 | return; |
|
| 80 | 52 | } |
|
| 81 | 53 | } |
|
| 96 | 68 | c->ismax = False; |
|
| 97 | 69 | XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); |
|
| 98 | 70 | for(;;) { |
|
| 99 | - | XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev); |
|
| 71 | + | XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); |
|
| 100 | 72 | switch(ev.type) { |
|
| 101 | - | default: |
|
| 102 | - | break; |
|
| 103 | - | case ConfigureRequest: |
|
| 104 | - | synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width); |
|
| 105 | - | XSync(dpy, False); |
|
| 106 | - | break; |
|
| 107 | 73 | case Expose: |
|
| 108 | 74 | handler[Expose](&ev); |
|
| 109 | 75 | break; |
|
| 123 | 89 | break; |
|
| 124 | 90 | case ButtonRelease: |
|
| 125 | 91 | XUngrabPointer(dpy, CurrentTime); |
|
| 126 | - | return; |
|
| 127 | - | case DestroyNotify: |
|
| 128 | - | case UnmapNotify: |
|
| 129 | - | XUngrabPointer(dpy, CurrentTime); |
|
| 130 | - | handler[ev.type](&ev); |
|
| 131 | 92 | return; |
|
| 132 | 93 | } |
|
| 133 | 94 | } |
|
| 187 | 148 | unsigned long newmask; |
|
| 188 | 149 | Client *c; |
|
| 189 | 150 | XConfigureRequestEvent *ev = &e->xconfigurerequest; |
|
| 151 | + | XEvent synev; |
|
| 190 | 152 | XWindowChanges wc; |
|
| 191 | 153 | ||
| 192 | 154 | if((c = getclient(ev->window))) { |
|
| 210 | 172 | newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); |
|
| 211 | 173 | if(newmask) |
|
| 212 | 174 | XConfigureWindow(dpy, c->win, newmask, &wc); |
|
| 213 | - | else |
|
| 214 | - | synconfig(c, c->x, c->y, c->w, c->h, c->border); |
|
| 175 | + | else { |
|
| 176 | + | synev.type = ConfigureNotify; |
|
| 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 | + | } |
|
| 215 | 188 | XSync(dpy, False); |
|
| 216 | 189 | if(c->isfloat) |
|
| 217 | 190 | resize(c, False, TopLeft); |
|