sander check this
This commit is contained in:
		
							
								
								
									
										56
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								event.c
									
									
									
									
									
								
							| @@ -20,6 +20,23 @@ KEYS | ||||
|  | ||||
| #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) | ||||
|  | ||||
| static void | ||||
| synconfig(Client *c, int x, int y, int w, int h, unsigned int border) { | ||||
| 	XEvent synev; | ||||
|  | ||||
| 	synev.type = ConfigureNotify; | ||||
| 	synev.xconfigure.display = dpy; | ||||
| 	synev.xconfigure.event = c->win; | ||||
| 	synev.xconfigure.window = c->win; | ||||
| 	synev.xconfigure.x = x; | ||||
| 	synev.xconfigure.y = y; | ||||
| 	synev.xconfigure.width = w; | ||||
| 	synev.xconfigure.height = h; | ||||
| 	synev.xconfigure.border_width = border; | ||||
| 	synev.xconfigure.above = None; | ||||
| 	XSendEvent(dpy, c->win, True, NoEventMask, &synev); | ||||
| } | ||||
|  | ||||
| static void | ||||
| movemouse(Client *c) { | ||||
| 	int x1, y1, ocx, ocy, di; | ||||
| @@ -34,10 +51,14 @@ movemouse(Client *c) { | ||||
| 		return; | ||||
| 	XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | ||||
| 	for(;;) { | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev); | ||||
| 		switch (ev.type) { | ||||
| 		default: | ||||
| 			break; | ||||
| 		case ConfigureRequest: | ||||
| 			synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width); | ||||
| 			XSync(dpy, False); | ||||
| 			break; | ||||
| 		case Expose: | ||||
| 			handler[Expose](&ev); | ||||
| 			break; | ||||
| @@ -50,6 +71,11 @@ movemouse(Client *c) { | ||||
| 		case ButtonRelease: | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			return; | ||||
| 		case DestroyNotify: | ||||
| 		case UnmapNotify: | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			handler[ev.type](&ev); | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -68,10 +94,14 @@ resizemouse(Client *c) { | ||||
| 		return; | ||||
| 	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h); | ||||
| 	for(;;) { | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); | ||||
| 		XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev); | ||||
| 		switch(ev.type) { | ||||
| 		default: | ||||
| 			break; | ||||
| 		case ConfigureRequest: | ||||
| 			synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width); | ||||
| 			XSync(dpy, False); | ||||
| 			break; | ||||
| 		case Expose: | ||||
| 			handler[Expose](&ev); | ||||
| 			break; | ||||
| @@ -92,6 +122,11 @@ resizemouse(Client *c) { | ||||
| 		case ButtonRelease: | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			return; | ||||
| 		case DestroyNotify: | ||||
| 		case UnmapNotify: | ||||
| 			XUngrabPointer(dpy, CurrentTime); | ||||
| 			handler[ev.type](&ev); | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -145,23 +180,6 @@ buttonpress(XEvent *e) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void | ||||
| synconfig(Client *c, int x, int y, int w, int h, unsigned int border) { | ||||
| 	XEvent synev; | ||||
|  | ||||
| 	synev.type = ConfigureNotify; | ||||
| 	synev.xconfigure.display = dpy; | ||||
| 	synev.xconfigure.event = c->win; | ||||
| 	synev.xconfigure.window = c->win; | ||||
| 	synev.xconfigure.x = x; | ||||
| 	synev.xconfigure.y = y; | ||||
| 	synev.xconfigure.width = w; | ||||
| 	synev.xconfigure.height = h; | ||||
| 	synev.xconfigure.border_width = border; | ||||
| 	synev.xconfigure.above = None; | ||||
| 	XSendEvent(dpy, c->win, True, NoEventMask, &synev); | ||||
| } | ||||
|  | ||||
| static void | ||||
| configurerequest(XEvent *e) { | ||||
| 	unsigned long newmask; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user