| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -48,6 +48,7 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <tools/pcb_grid_helper.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <tools/pad_tool.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <tools/drc_tool.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <tools/drawing_tool.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <view/view_controls.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <connectivity/connectivity_algo.h>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <connectivity/connectivity_items.h>
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -358,6 +359,13 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto displayConstraintsMessage = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            [editFrame]( bool constrained ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                editFrame->DisplayConstraintsMsg( constrained ? _( "Constrain to H, V, 45" ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                                            : wxT( "" ) ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::vector<BOARD_ITEM*> sel_items;         // All the items operated on by the move below
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::vector<BOARD_ITEM*> orig_items;        // All the original items in the selection
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::vector<FOOTPRINT*> lastFpInConflict;   // last footprints with courtyard overlapping
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -401,6 +409,8 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    bool showCourtyardConflicts = !m_isFootprintEditor | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                    && board->IsElementVisible( LAYER_CONFLICTS_SHADOW ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    displayConstraintsMessage( hv45Mode ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Used to test courtyard overlaps
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    DRC_TEST_PROVIDER_COURTYARD_CLEARANCE_ON_MOVE drc_on_move; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -693,6 +703,7 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        else if( evt->IsAction( &PCB_ACTIONS::toggleHV45Mode ) ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            hv45Mode = !hv45Mode; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            displayConstraintsMessage( hv45Mode ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            evt->SetPassEvent( false ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        else | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -716,6 +727,8 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    m_dragging = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    editFrame->UndoRedoBlock( false ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    m_toolMgr->GetTool<DRAWING_TOOL>()->UpdateStatusBar(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if( hasRedrawn3D && restore_state ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        editFrame->Update3DView( false, true ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |