mirror of
				https://codeberg.org/dwl/dwl.git
				synced 2025-10-30 19:44:17 +00:00 
			
		
		
		
	correctly handle cursor motion when button is held (for layer surfaces)
This commit is contained in:
		
							parent
							
								
									0d1ca4663c
								
							
						
					
					
						commit
						952fde68a3
					
				
							
								
								
									
										15
									
								
								client.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								client.h
									
									
									
									
									
								
							| @ -307,3 +307,18 @@ toplevel_from_popup(struct wlr_xdg_popup *popup) | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | static inline void * | ||||||
|  | toplevel_from_wlr_layer_surface(struct wlr_surface *s) | ||||||
|  | { | ||||||
|  | 	Client *c; | ||||||
|  | 	struct wlr_layer_surface_v1 *wlr_layer_surface; | ||||||
|  | 
 | ||||||
|  | 	if ((c = client_from_wlr_surface(s))) | ||||||
|  | 		return c; | ||||||
|  | 	else if (s && wlr_surface_is_layer_surface(s) | ||||||
|  | 			&& (wlr_layer_surface = wlr_layer_surface_v1_from_wlr_surface(s))) | ||||||
|  | 		return wlr_layer_surface->data; | ||||||
|  | 
 | ||||||
|  | 	return NULL; | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								dwl.c
									
									
									
									
									
								
							| @ -1504,6 +1504,7 @@ motionnotify(uint32_t time) | |||||||
| { | { | ||||||
| 	double sx = 0, sy = 0; | 	double sx = 0, sy = 0; | ||||||
| 	Client *c = NULL; | 	Client *c = NULL; | ||||||
|  | 	LayerSurface *l; | ||||||
| 	struct wlr_surface *surface = NULL; | 	struct wlr_surface *surface = NULL; | ||||||
| 	struct wlr_drag_icon *icon; | 	struct wlr_drag_icon *icon; | ||||||
| 
 | 
 | ||||||
| @ -1536,10 +1537,12 @@ motionnotify(uint32_t time) | |||||||
| 	xytonode(cursor->x, cursor->y, &surface, &c, NULL, &sx, &sy); | 	xytonode(cursor->x, cursor->y, &surface, &c, NULL, &sx, &sy); | ||||||
| 
 | 
 | ||||||
| 	if (cursor_mode == CurPressed && !seat->drag) { | 	if (cursor_mode == CurPressed && !seat->drag) { | ||||||
|  | 		if ((l = toplevel_from_wlr_layer_surface( | ||||||
|  | 				 seat->pointer_state.focused_surface))) { | ||||||
| 			surface = seat->pointer_state.focused_surface; | 			surface = seat->pointer_state.focused_surface; | ||||||
| 		c = client_from_wlr_surface(surface); | 			sx = cursor->x - l->geom.x; | ||||||
| 		sx = c ? cursor->x - c->geom.x : 0; | 			sy = cursor->y - l->geom.y; | ||||||
| 		sy = c ? cursor->y - c->geom.y : 0; | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* If there's no client surface under the cursor, set the cursor image to a
 | 	/* If there's no client surface under the cursor, set the cursor image to a
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Leonardo Hernández Hernández
						Leonardo Hernández Hernández