got rid of compile time xidx configuration, querying mouse pointer instead
This commit is contained in:
		
							parent
							
								
									9086f98068
								
							
						
					
					
						commit
						c86ed46a1b
					
				| @ -13,10 +13,6 @@ static uint snap                    = 32;       /* snap pixel */ | |||||||
| static Bool showbar                 = True;     /* False means no bar */ | static Bool showbar                 = True;     /* False means no bar */ | ||||||
| static Bool topbar                  = True;     /* False means bottom bar */ | static Bool topbar                  = True;     /* False means bottom bar */ | ||||||
| 
 | 
 | ||||||
| #ifdef XINERAMA |  | ||||||
| static uint xidx                    = 0;        /* Xinerama screen index to use */ |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /* tagging */ | /* tagging */ | ||||||
| static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; | static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								dwm.c
									
									
									
									
									
								
							| @ -44,16 +44,17 @@ | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* macros */ | /* macros */ | ||||||
| #define MAX(a, b)       ((a) > (b) ? (a) : (b)) | #define BUTTONMASK              (ButtonPressMask|ButtonReleaseMask) | ||||||
| #define MIN(a, b)       ((a) < (b) ? (a) : (b)) | #define CLEANMASK(mask)         (mask & ~(numlockmask|LockMask)) | ||||||
| #define BUTTONMASK      (ButtonPressMask|ButtonReleaseMask) | #define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH)) | ||||||
| #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask)) | #define ISVISIBLE(x)            (x->tags & tagset[seltags]) | ||||||
| #define LENGTH(x)       (sizeof x / sizeof x[0]) | #define LENGTH(x)               (sizeof x / sizeof x[0]) | ||||||
| #define MAXTAGLEN       16 | #define MAX(a, b)               ((a) > (b) ? (a) : (b)) | ||||||
| #define MOUSEMASK       (BUTTONMASK|PointerMotionMask) | #define MIN(a, b)               ((a) < (b) ? (a) : (b)) | ||||||
| #define TAGMASK         ((int)((1LL << LENGTH(tags)) - 1)) | #define MAXTAGLEN               16 | ||||||
| #define TEXTW(x)        (textnw(x, strlen(x)) + dc.font.height) | #define MOUSEMASK               (BUTTONMASK|PointerMotionMask) | ||||||
| #define ISVISIBLE(x)    (x->tags & tagset[seltags]) | #define TAGMASK                 ((int)((1LL << LENGTH(tags)) - 1)) | ||||||
|  | #define TEXTW(x)                (textnw(x, strlen(x)) + dc.font.height) | ||||||
| 
 | 
 | ||||||
| /* enums */ | /* enums */ | ||||||
| enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */ | ||||||
| @ -974,7 +975,7 @@ monocle(void) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| movemouse(const Arg *arg) { | movemouse(const Arg *arg) { | ||||||
| 	int x1, y1, ocx, ocy, di, nx, ny; | 	int x, y, ocx, ocy, di, nx, ny; | ||||||
| 	unsigned int dui; | 	unsigned int dui; | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 	Window dummy; | 	Window dummy; | ||||||
| @ -988,7 +989,7 @@ movemouse(const Arg *arg) { | |||||||
| 	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | 	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, | ||||||
| 	None, cursor[CurMove], CurrentTime) != GrabSuccess) | 	None, cursor[CurMove], CurrentTime) != GrabSuccess) | ||||||
| 		return; | 		return; | ||||||
| 	XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); | 	XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui); | ||||||
| 	for(;;) { | 	for(;;) { | ||||||
| 		XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); | 		XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); | ||||||
| 		switch (ev.type) { | 		switch (ev.type) { | ||||||
| @ -1002,8 +1003,8 @@ movemouse(const Arg *arg) { | |||||||
| 			break; | 			break; | ||||||
| 		case MotionNotify: | 		case MotionNotify: | ||||||
| 			XSync(dpy, False); | 			XSync(dpy, False); | ||||||
| 			nx = ocx + (ev.xmotion.x - x1); | 			nx = ocx + (ev.xmotion.x - x); | ||||||
| 			ny = ocy + (ev.xmotion.y - y1); | 			ny = ocy + (ev.xmotion.y - y); | ||||||
| 			if(snap && nx >= wx && nx <= wx + ww | 			if(snap && nx >= wx && nx <= wx + ww | ||||||
| 			        && ny >= wy && ny <= wy + wh) { | 			        && ny >= wy && ny <= wy + wh) { | ||||||
| 				if(abs(wx - nx) < snap) | 				if(abs(wx - nx) < snap) | ||||||
| @ -1557,12 +1558,24 @@ updatebar(void) { | |||||||
| void | void | ||||||
| updategeom(void) { | updategeom(void) { | ||||||
| #ifdef XINERAMA | #ifdef XINERAMA | ||||||
| 	int i; | 	int n; | ||||||
|  | 	unsigned int xidx = 0; | ||||||
| 	XineramaScreenInfo *info = NULL; | 	XineramaScreenInfo *info = NULL; | ||||||
| 
 | 
 | ||||||
| 	/* window area geometry */ | 	/* window area geometry */ | ||||||
| 	if(XineramaIsActive(dpy)) { | 	if(XineramaIsActive(dpy)) { | ||||||
| 		info = XineramaQueryScreens(dpy, &i); | 		info = XineramaQueryScreens(dpy, &n); | ||||||
|  | 		if(n > 1) { | ||||||
|  | 			int di, i, x, y; | ||||||
|  | 			unsigned int dui; | ||||||
|  | 			Window dummy; | ||||||
|  | 			if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) | ||||||
|  | 				for(i = 0; i < n; i++) | ||||||
|  | 					if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) { | ||||||
|  | 						xidx = i; | ||||||
|  | 						break; | ||||||
|  | 					} | ||||||
|  | 		} | ||||||
| 		wx = info[xidx].x_org; | 		wx = info[xidx].x_org; | ||||||
| 		wy = showbar && topbar ?  info[xidx].y_org + bh : info[xidx].y_org; | 		wy = showbar && topbar ?  info[xidx].y_org + bh : info[xidx].y_org; | ||||||
| 		ww = info[xidx].width; | 		ww = info[xidx].width; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R Garbe
						Anselm R Garbe