Warp pointer on first/last pixel
Previously, the pointer would get warped when it had left the window. This doesn't work when sxiv is run in fullscreen mode (or similar -- see dwm's monocle mode): The pointer can never leave the window in such situations. To fix this, warp the pointer when it's on the first/last pixel. To avoid an endless warping loop, the new position must be at least one pixel away from the next warp position.
This commit is contained in:
		
							parent
							
								
									26a624a543
								
							
						
					
					
						commit
						b98a48576e
					
				
							
								
								
									
										16
									
								
								commands.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								commands.c
									
									
									
									
									
								
							| @ -352,14 +352,14 @@ bool i_drag(arg_t a) | |||||||
| 				y = e.xmotion.y; | 				y = e.xmotion.y; | ||||||
| 
 | 
 | ||||||
| 				/* wrap the mouse around */ | 				/* wrap the mouse around */ | ||||||
| 				if (x < 0) { | 				if (x <= 0) { | ||||||
| 					WARP(win.w, y); | 					WARP(win.w - 2, y); | ||||||
| 				} else if (x > win.w) { | 				} else if (x >= win.w - 1) { | ||||||
| 					WARP(0, y); | 					WARP(1, y); | ||||||
| 				} else if (y < 0) { | 				} else if (y <= 0) { | ||||||
| 					WARP(x, win.h); | 					WARP(x, win.h - 2); | ||||||
| 				} else if (y > win.h) { | 				} else if (y >= win.h - 1) { | ||||||
| 					WARP(x, 0); | 					WARP(x, 1); | ||||||
| 				} | 				} | ||||||
| 				dx += x - ox; | 				dx += x - ox; | ||||||
| 				dy += y - oy; | 				dy += y - oy; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Hofmann
						Peter Hofmann