|  | @ -241,7 +241,6 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC ) | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |         case BLOCK_DRAG: /* Drag */ |  |  |         case BLOCK_DRAG: /* Drag */ | 
		
	
		
			
				|  |  |             BreakSegmentOnJunction( (SCH_SCREEN*) GetScreen() ); |  |  |             BreakSegmentOnJunction( (SCH_SCREEN*) GetScreen() ); | 
		
	
		
			
				|  |  | 
 |  |  |  | 
		
	
		
			
				|  |  |         case BLOCK_MOVE:    /* Move */ |  |  |         case BLOCK_MOVE:    /* Move */ | 
		
	
		
			
				|  |  |         case BLOCK_COPY:    /* Copy */ |  |  |         case BLOCK_COPY:    /* Copy */ | 
		
	
		
			
				|  |  |             PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() ); |  |  |             PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() ); | 
		
	
	
		
			
				|  | @ -584,7 +583,6 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) | 
		
	
		
			
				|  |  | { |  |  | { | 
		
	
		
			
				|  |  |     SCH_ITEM*           Struct; |  |  |     SCH_ITEM*           Struct; | 
		
	
		
			
				|  |  |     EDA_DrawLineStruct* SegmStruct; |  |  |     EDA_DrawLineStruct* SegmStruct; | 
		
	
		
			
				|  |  |     int ox, oy, fx, fy; |  |  |  | 
		
	
		
			
				|  |  |   |  |  |   | 
		
	
		
			
				|  |  |     PICKED_ITEMS_LIST*  pickedlist = &screen->m_BlockLocate.m_ItemsSelection; |  |  |     PICKED_ITEMS_LIST*  pickedlist = &screen->m_BlockLocate.m_ItemsSelection; | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
	
		
			
				|  | @ -609,7 +607,7 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) | 
		
	
		
			
				|  |  |     { |  |  |     { | 
		
	
		
			
				|  |  |         for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) |  |  |         for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) | 
		
	
		
			
				|  |  |         { |  |  |         { | 
		
	
		
			
				|  |  |             Struct = (SCH_ITEM*)(SCH_ITEM*) pickedlist->GetPickedItem( ii ); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             Struct = (SCH_ITEM*) pickedlist->GetPickedItem( ii ); | 
		
	
		
			
				|  |  |             Struct->m_Flags = SELECTED; |  |  |             Struct->m_Flags = SELECTED; | 
		
	
		
			
				|  |  |         } |  |  |         } | 
		
	
		
			
				|  |  |     } |  |  |     } | 
		
	
	
		
			
				|  | @ -617,16 +615,6 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) | 
		
	
		
			
				|  |  |     if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) |  |  |     if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) | 
		
	
		
			
				|  |  |         return; |  |  |         return; | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |     ox = screen->m_BlockLocate.GetX(); |  |  |  | 
		
	
		
			
				|  |  |     oy = screen->m_BlockLocate.GetY(); |  |  |  | 
		
	
		
			
				|  |  |     fx = screen->m_BlockLocate.GetRight(); |  |  |  | 
		
	
		
			
				|  |  |     fy = screen->m_BlockLocate.GetBottom(); |  |  |  | 
		
	
		
			
				|  |  | 
 |  |  |  | 
		
	
		
			
				|  |  |     if( fx < ox ) |  |  |  | 
		
	
		
			
				|  |  |         EXCHG( fx, ox ); |  |  |  | 
		
	
		
			
				|  |  |     if( fy < oy ) |  |  |  | 
		
	
		
			
				|  |  |         EXCHG( fy, oy ); |  |  |  | 
		
	
		
			
				|  |  | 
 |  |  |  | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |     /* Suppression du deplacement des extremites de segments hors cadre
 |  |  |     /* Suppression du deplacement des extremites de segments hors cadre
 | 
		
	
		
			
				|  |  |      *  de selection */ |  |  |      *  de selection */ | 
		
	
	
		
			
				|  | @ -636,13 +624,15 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) | 
		
	
		
			
				|  |  |         if( Struct->Type() == DRAW_SEGMENT_STRUCT_TYPE ) |  |  |         if( Struct->Type() == DRAW_SEGMENT_STRUCT_TYPE ) | 
		
	
		
			
				|  |  |         { |  |  |         { | 
		
	
		
			
				|  |  |             SegmStruct = (EDA_DrawLineStruct*) Struct; |  |  |             SegmStruct = (EDA_DrawLineStruct*) Struct; | 
		
	
		
			
				|  |  |             if( (SegmStruct->m_Start.x < ox) || (SegmStruct->m_Start.x > fx) |  |  |  | 
		
	
		
			
				|  |  |                || (SegmStruct->m_Start.y < oy) || (SegmStruct->m_Start.y > fy) ) |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             if( ! screen->m_BlockLocate.Inside(SegmStruct->m_Start) ) | 
		
	
		
			
				|  |  |                 SegmStruct->m_Flags |= STARTPOINT; |  |  |                 SegmStruct->m_Flags |= STARTPOINT; | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |             if( (SegmStruct->m_End.x < ox) || (SegmStruct->m_End.x > fx) |  |  |  | 
		
	
		
			
				|  |  |                || (SegmStruct->m_End.y < oy) || (SegmStruct->m_End.y > fy) ) |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             if( ! screen->m_BlockLocate.Inside(SegmStruct->m_End) ) | 
		
	
		
			
				|  |  |                 SegmStruct->m_Flags |= ENDPOINT; |  |  |                 SegmStruct->m_Flags |= ENDPOINT; | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |             // Save m_Flags for Undo/redo drag operations:
 | 
		
	
		
			
				|  |  |  |  |  |             pickedlist->SetPickerFlags(SegmStruct->m_Flags, ii); | 
		
	
		
			
				|  |  |  |  |  |              | 
		
	
		
			
				|  |  |         } |  |  |         } | 
		
	
		
			
				|  |  |     } |  |  |     } | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
	
		
			
				|  | @ -660,7 +650,7 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) | 
		
	
		
			
				|  |  |             DrawItem = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos ); |  |  |             DrawItem = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos ); | 
		
	
		
			
				|  |  |             while( DrawItem ) |  |  |             while( DrawItem ) | 
		
	
		
			
				|  |  |             { |  |  |             { | 
		
	
		
			
				|  |  |                 if( (pos.x < ox) || (pos.x > fx) || (pos.y < oy) || (pos.y > fy) ) |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 if( ! screen->m_BlockLocate.Inside(pos) ) | 
		
	
		
			
				|  |  |                 { |  |  |                 { | 
		
	
		
			
				|  |  |                     // This pin is outside area,
 |  |  |                     // This pin is outside area,
 | 
		
	
		
			
				|  |  |                     // but because it it the pin of a selected component
 |  |  |                     // but because it it the pin of a selected component
 | 
		
	
	
		
			
				|  | @ -724,6 +714,9 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position ) | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |             if( STRUCT->m_End == position ) |  |  |             if( STRUCT->m_End == position ) | 
		
	
		
			
				|  |  |                 STRUCT->m_Flags &= ~ENDPOINT; |  |  |                 STRUCT->m_Flags &= ~ENDPOINT; | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |             // Save m_Flags for Undo/redo drag operations:
 | 
		
	
		
			
				|  |  |  |  |  |             pickedlist->SetPickerFlags(STRUCT->m_Flags, ii); | 
		
	
		
			
				|  |  |             break; |  |  |             break; | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |         default: |  |  |         default: | 
		
	
	
		
			
				|  | @ -768,12 +761,16 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position ) | 
		
	
		
			
				|  |  |             { |  |  |             { | 
		
	
		
			
				|  |  |                 Struct->m_Flags  = SELECTED | ENDPOINT | STARTPOINT; |  |  |                 Struct->m_Flags  = SELECTED | ENDPOINT | STARTPOINT; | 
		
	
		
			
				|  |  |                 Struct->m_Flags &= ~STARTPOINT; |  |  |                 Struct->m_Flags &= ~STARTPOINT; | 
		
	
		
			
				|  |  |  |  |  |                 // Save m_Flags for Undo/redo drag operations:
 | 
		
	
		
			
				|  |  |  |  |  |                 picker.m_PickerFlags= Struct->m_Flags; | 
		
	
		
			
				|  |  |                 pickedlist->PushItem( picker ); |  |  |                 pickedlist->PushItem( picker ); | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  |             else if( STRUCT->m_End == position ) |  |  |             else if( STRUCT->m_End == position ) | 
		
	
		
			
				|  |  |             { |  |  |             { | 
		
	
		
			
				|  |  |                 Struct->m_Flags  = SELECTED | ENDPOINT | STARTPOINT; |  |  |                 Struct->m_Flags  = SELECTED | ENDPOINT | STARTPOINT; | 
		
	
		
			
				|  |  |                 Struct->m_Flags &= ~ENDPOINT; |  |  |                 Struct->m_Flags &= ~ENDPOINT; | 
		
	
		
			
				|  |  |  |  |  |                 // Save m_Flags for Undo/redo drag operations:
 | 
		
	
		
			
				|  |  |  |  |  |                 picker.m_PickerFlags= Struct->m_Flags; | 
		
	
		
			
				|  |  |                 pickedlist->PushItem( picker ); |  |  |                 pickedlist->PushItem( picker ); | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  |             break; |  |  |             break; | 
		
	
	
		
			
				|  | 
 |