|  |  | @ -122,6 +122,9 @@ static void drag_end(struct wlr_drag *drag) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			drag_icon_set_mapped(drag->icon, false); |  |  |  | 			drag_icon_set_mapped(drag->icon, false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		assert(drag->seat->drag == drag); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		drag->seat->drag = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wlr_signal_emit_safe(&drag->events.destroy, drag); |  |  |  | 		wlr_signal_emit_safe(&drag->events.destroy, drag); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		free(drag); |  |  |  | 		free(drag); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					|  |  | @ -434,6 +437,13 @@ bool seat_client_start_drag(struct wlr_seat_client *client, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return true; |  |  |  | 		return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (seat->drag != NULL) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		wlr_log(WLR_DEBUG, "Refusing to start drag, " | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			"another drag is already in progress"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		free(drag); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (icon_surface) { |  |  |  | 	if (icon_surface) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int32_t touch_id = (point ? point->touch_id : 0); |  |  |  | 		int32_t touch_id = (point ? point->touch_id : 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		struct wlr_drag_icon *icon = |  |  |  | 		struct wlr_drag_icon *icon = | 
			
		
	
	
		
		
			
				
					|  |  | 
 |