|  |  | @ -215,6 +215,18 @@ static enum wlr_edges find_resize_edge(struct sway_container *cont, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return edge; |  |  |  | 	return edge; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | static void handle_mousedown_motion(struct sway_seat *seat, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		struct sway_cursor *cursor, uint32_t time_msec) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct sway_container *con = seat->op_container; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (seat_is_input_allowed(seat, con->sway_view->surface)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		double moved_x = cursor->cursor->x - seat->op_ref_lx; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		double moved_y = cursor->cursor->y - seat->op_ref_ly; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		double sx = seat->op_ref_con_lx + moved_x; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		double sy = seat->op_ref_con_ly + moved_y; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		wlr_seat_pointer_notify_motion(seat->wlr_seat, time_msec, sx, sy); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void handle_move_motion(struct sway_seat *seat, |  |  |  | static void handle_move_motion(struct sway_seat *seat, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		struct sway_cursor *cursor) { |  |  |  | 		struct sway_cursor *cursor) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct sway_container *con = seat->op_container; |  |  |  | 	struct sway_container *con = seat->op_container; | 
			
		
	
	
		
		
			
				
					|  |  | @ -397,6 +409,9 @@ void cursor_send_pointer_motion(struct sway_cursor *cursor, uint32_t time_msec, | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (seat->operation != OP_NONE) { |  |  |  | 	if (seat->operation != OP_NONE) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		switch (seat->operation) { |  |  |  | 		switch (seat->operation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		case OP_MOUSEDOWN: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			handle_mousedown_motion(seat, cursor, time_msec); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			break; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		case OP_MOVE: |  |  |  | 		case OP_MOVE: | 
			
		
	
		
		
			
				
					
					|  |  |  | 			handle_move_motion(seat, cursor); |  |  |  | 			handle_move_motion(seat, cursor); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			break; |  |  |  | 			break; | 
			
		
	
	
		
		
			
				
					|  |  | @ -743,6 +758,14 @@ void dispatch_cursor_button(struct sway_cursor *cursor, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	// Handle mousedown on a container surface
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (surface && cont && state == WLR_BUTTON_PRESSED) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		seat_set_focus(seat, cont); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		seat_pointer_notify_button(seat, time_msec, button, state); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		seat_begin_mousedown(seat, cont, button, sx, sy); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Handle clicking a container surface
 |  |  |  | 	// Handle clicking a container surface
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (cont) { |  |  |  | 	if (cont) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		seat_set_focus(seat, cont); |  |  |  | 		seat_set_focus(seat, cont); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |