|  |  | @ -954,6 +954,18 @@ struct seat_config *seat_get_config(struct sway_seat *seat) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return NULL; |  |  |  | 	return NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | void seat_begin_down(struct sway_seat *seat, struct sway_container *con, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		uint32_t button, double sx, double sy) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->operation = OP_DOWN; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_container = con; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_button = button; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_ref_lx = seat->cursor->cursor->x; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_ref_ly = seat->cursor->cursor->y; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_ref_con_lx = sx; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_ref_con_ly = sy; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	seat->op_moved = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void seat_begin_move(struct sway_seat *seat, struct sway_container *con, |  |  |  | void seat_begin_move(struct sway_seat *seat, struct sway_container *con, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		uint32_t button) { |  |  |  | 		uint32_t button) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (!seat->cursor) { |  |  |  | 	if (!seat->cursor) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -1007,6 +1019,7 @@ void seat_begin_resize_tiling(struct sway_seat *seat, | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void seat_end_mouse_operation(struct sway_seat *seat) { |  |  |  | void seat_end_mouse_operation(struct sway_seat *seat) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	enum sway_seat_operation operation = seat->operation; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (seat->operation == OP_MOVE) { |  |  |  | 	if (seat->operation == OP_MOVE) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// We "move" the container to its own location so it discovers its
 |  |  |  | 		// We "move" the container to its own location so it discovers its
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// output again.
 |  |  |  | 		// output again.
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1015,7 +1028,19 @@ void seat_end_mouse_operation(struct sway_seat *seat) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	seat->operation = OP_NONE; |  |  |  | 	seat->operation = OP_NONE; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	seat->op_container = NULL; |  |  |  | 	seat->op_container = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (operation == OP_DOWN) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		// Set the cursor's previous coords to the x/y at the start of the
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		// operation, so the container change will be detected if using
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		// focus_follows_mouse and the cursor moved off the original container
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		// during the operation.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		seat->cursor->previous.x = seat->op_ref_lx; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		seat->cursor->previous.y = seat->op_ref_ly; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if (seat->op_moved) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			cursor_send_pointer_motion(seat->cursor, 0, true); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} else { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		cursor_set_image(seat->cursor, "left_ptr", NULL); |  |  |  | 		cursor_set_image(seat->cursor, "left_ptr", NULL); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec, |  |  |  | void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec, | 
			
		
	
	
		
		
			
				
					|  |  | 
 |