Loading eeschema/block.cpp +15 −16 Original line number Original line Diff line number Diff line Loading @@ -605,24 +605,11 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) for( Struct = screen->EEDrawList; Struct != NULL; Struct = Struct->Next() ) for( Struct = screen->EEDrawList; Struct != NULL; Struct = Struct->Next() ) Struct->m_Flags = 0; Struct->m_Flags = 0; // Sel .m_Flags to selected for a wire or bus in selected area if there is // only one item: if( pickedlist->GetCount() == 1 ) { Struct = (SCH_ITEM*) pickedlist->GetPickedItem( 0 ); if( Struct->Type() == DRAW_SEGMENT_STRUCT_TYPE ) Struct->m_Flags = SELECTED; } // Sel .m_Flags to selected for a wire or bus in selected area for a list // of items: else { for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) { { Struct = (SCH_ITEM*) pickedlist->GetPickedItem( ii ); Struct = (SCH_ITEM*) pickedlist->GetPickedItem( ii ); Struct->m_Flags = SELECTED; Struct->m_Flags = SELECTED; } } } if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) return; return; Loading Loading @@ -653,6 +640,18 @@ 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*) (SCH_ITEM*) pickedlist->GetPickedItem( ii ); if( ( Struct->Type() == TYPE_SCH_LABEL ) || ( Struct->Type() == TYPE_SCH_GLOBALLABEL ) || ( Struct->Type() == TYPE_SCH_HIERLABEL ) ) { #undef STRUCT #define STRUCT ( (SCH_TEXT*) Struct ) if( !screen->m_BlockLocate.Inside( STRUCT->m_Pos ) ) { AddPickedItem( screen, STRUCT->m_Pos ); } } if( Struct->Type() == TYPE_SCH_COMPONENT ) if( Struct->Type() == TYPE_SCH_COMPONENT ) { { // Add all pins of the selected component to list // Add all pins of the selected component to list Loading eeschema/dangling_ends.cpp +28 −52 Original line number Original line Diff line number Diff line Loading @@ -54,42 +54,21 @@ void TestLabelForDangling( SCH_TEXT* label, DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ); DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ); /* Returns TRUE if the point P is on the segment S. /* Returns true if the point P is on the segment S. */ * The segment is assumed horizontal or vertical. bool SegmentIntersect( wxPoint aSegStart, wxPoint aSegEnd, wxPoint aTestPoint ) */ bool SegmentIntersect( int Sx1, int Sy1, int Sx2, int Sy2, int Px1, int Py1 ) { { int Sxmin, Sxmax, Symin, Symax; wxPoint vectSeg = aSegEnd - aSegStart; // Vector from S1 to S2 wxPoint vectPoint = aTestPoint - aSegStart; // Vector from S1 to P if( Sx1 == Sx2 ) /* Line S is vertical. */ // Use long long here to avoid overflow in calculations { if( (long long)vectSeg.x * vectPoint.y - (long long)vectSeg.y * vectPoint.x ) Symin = MIN( Sy1, Sy2 ); return false; /* Cross product non-zero, vectors not parallel */ Symax = MAX( Sy1, Sy2 ); if( Px1 != Sx1 ) if( ((long long)vectSeg.x * vectPoint.x + (long long)vectSeg.y * vectPoint.y) < return FALSE; ((long long)vectPoint.x * vectPoint.x + (long long)vectPoint.y * vectPoint.y) ) return false; /* Point not on segment */ if( Py1 >= Symin && Py1 <= Symax ) return true; return TRUE; else return FALSE; } else if( Sy1 == Sy2 ) /* Line S is horizontal. */ { Sxmin = MIN( Sx1, Sx2 ); Sxmax = MAX( Sx1, Sx2 ); if( Py1 != Sy1 ) return FALSE; if( Px1 >= Sxmin && Px1 <= Sxmax ) return TRUE; else return FALSE; } else return FALSE; } } Loading Loading @@ -133,7 +112,7 @@ void WinEDA_SchematicFrame::TestDanglingEnds( SCH_ITEM* DrawList, wxDC* DC ) break; break; if( STRUCT->GetLayer() == LAYER_BUS ) if( STRUCT->GetLayer() == LAYER_BUS ) { { STRUCT->m_StartIsDangling = STRUCT->m_EndIsDangling = FALSE; STRUCT->m_StartIsDangling = STRUCT->m_EndIsDangling = false; break; break; } } break; break; Loading Loading @@ -182,7 +161,7 @@ void TestWireForDangling( SCH_LINE* DrawRef, WinEDA_SchematicFrame* frame, wxDC* DC ) wxDC* DC ) { { DanglingEndHandle* terminal_item; DanglingEndHandle* terminal_item; bool Sdangstate = TRUE, Edangstate = TRUE; bool Sdangstate = true, Edangstate = true; for( terminal_item = ItemList; terminal_item != NULL; for( terminal_item = ItemList; terminal_item != NULL; terminal_item = terminal_item->m_Pnext ) terminal_item = terminal_item->m_Pnext ) Loading @@ -192,13 +171,13 @@ void TestWireForDangling( SCH_LINE* DrawRef, WinEDA_SchematicFrame* frame, if( (DrawRef->m_Start.x == terminal_item->m_Pos.x) if( (DrawRef->m_Start.x == terminal_item->m_Pos.x) && (DrawRef->m_Start.y == terminal_item->m_Pos.y) ) && (DrawRef->m_Start.y == terminal_item->m_Pos.y) ) Sdangstate = FALSE; Sdangstate = false; if( (DrawRef->m_End.x == terminal_item->m_Pos.x) if( (DrawRef->m_End.x == terminal_item->m_Pos.x) && (DrawRef->m_End.y == terminal_item->m_Pos.y) ) && (DrawRef->m_End.y == terminal_item->m_Pos.y) ) Edangstate = FALSE; Edangstate = false; if( (Sdangstate == FALSE) && (Edangstate == FALSE) ) if( (Sdangstate == false) && (Edangstate == false) ) break; break; } } Loading @@ -220,7 +199,7 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, wxDC* DC ) wxDC* DC ) { { DanglingEndHandle* terminal_item; DanglingEndHandle* terminal_item; bool dangstate = TRUE; bool dangstate = true; for( terminal_item = ItemList; terminal_item != NULL; for( terminal_item = ItemList; terminal_item != NULL; terminal_item = terminal_item->m_Pnext ) terminal_item = terminal_item->m_Pnext ) Loading @@ -235,16 +214,14 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, case SHEET_LABEL_END: case SHEET_LABEL_END: if( ( label->m_Pos.x == terminal_item->m_Pos.x ) if( ( label->m_Pos.x == terminal_item->m_Pos.x ) && ( label->m_Pos.y == terminal_item->m_Pos.y ) ) && ( label->m_Pos.y == terminal_item->m_Pos.y ) ) dangstate = FALSE; dangstate = false; break; break; case WIRE_START_END: case WIRE_START_END: case BUS_START_END: case BUS_START_END: dangstate = !SegmentIntersect( terminal_item->m_Pos.x, dangstate = !SegmentIntersect( terminal_item->m_Pos, terminal_item->m_Pos.y, terminal_item->m_Pnext->m_Pos, terminal_item->m_Pnext->m_Pos.x, label->m_Pos ); terminal_item->m_Pnext->m_Pos.y, label->m_Pos.x, label->m_Pos.y ); terminal_item = terminal_item->m_Pnext; terminal_item = terminal_item->m_Pnext; break; break; Loading @@ -256,7 +233,7 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, break; break; } } if( dangstate == FALSE ) if( dangstate == false ) break; break; } } Loading Loading @@ -417,8 +394,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ) { { SCH_SHEET* sheet = (SCH_SHEET*) DrawItem; SCH_SHEET* sheet = (SCH_SHEET*) DrawItem; BOOST_FOREACH( SCH_SHEET_PIN pinsheet, sheet->GetSheetPins() ) BOOST_FOREACH( SCH_SHEET_PIN pinsheet, sheet->GetSheetPins() ) { { wxASSERT( pinsheet.Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ); wxASSERT( pinsheet.Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ); item = new DanglingEndHandle( SHEET_LABEL_END ); item = new DanglingEndHandle( SHEET_LABEL_END ); Loading eeschema/hotkeys.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -578,10 +578,13 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, wxPostEvent( this, eventMoveOrDragComponent ); wxPostEvent( this, eventMoveOrDragComponent ); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: wxPostEvent( this, eventMoveOrDragComponent ); break; case TYPE_SCH_TEXT: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) if( HK_Descr->m_Idcommand != HK_DRAG ) Loading eeschema/netlist.cpp +1 −3 Original line number Original line Diff line number Diff line Loading @@ -1031,9 +1031,7 @@ static void SegmentToPointConnect( NETLIST_OBJECT* Jonction, continue; continue; } } if( SegmentIntersect( Segment->m_Start.x, Segment->m_Start.y, if( SegmentIntersect( Segment->m_Start, Segment->m_End, Jonction->m_Start ) ) Segment->m_End.x, Segment->m_End.y, Jonction->m_Start.x, Jonction->m_Start.y ) ) { { /* Propagation Netcode has all the objects of the same Netcode. */ /* Propagation Netcode has all the objects of the same Netcode. */ if( IsBus == 0 ) if( IsBus == 0 ) Loading eeschema/onrightclick.cpp +9 −0 Original line number Original line Diff line number Diff line Loading @@ -342,6 +342,9 @@ void AddMenusForGLabel( wxMenu* PopMenu, SCH_GLOBALLABEL* GLabel ) msg = AddHotkeyName( _( "Move Global Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Global Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Global Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Global Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Global Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading Loading @@ -376,6 +379,9 @@ void AddMenusForHLabel( wxMenu* PopMenu, SCH_HIERLABEL* HLabel ) msg = AddHotkeyName( _( "Move Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading Loading @@ -409,6 +415,9 @@ void AddMenusForLabel( wxMenu* PopMenu, SCH_LABEL* Label ) msg = AddHotkeyName( _( "Move Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading Loading
eeschema/block.cpp +15 −16 Original line number Original line Diff line number Diff line Loading @@ -605,24 +605,11 @@ static void CollectStructsToDrag( SCH_SCREEN* screen ) for( Struct = screen->EEDrawList; Struct != NULL; Struct = Struct->Next() ) for( Struct = screen->EEDrawList; Struct != NULL; Struct = Struct->Next() ) Struct->m_Flags = 0; Struct->m_Flags = 0; // Sel .m_Flags to selected for a wire or bus in selected area if there is // only one item: if( pickedlist->GetCount() == 1 ) { Struct = (SCH_ITEM*) pickedlist->GetPickedItem( 0 ); if( Struct->Type() == DRAW_SEGMENT_STRUCT_TYPE ) Struct->m_Flags = SELECTED; } // Sel .m_Flags to selected for a wire or bus in selected area for a list // of items: else { for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ ) { { Struct = (SCH_ITEM*) pickedlist->GetPickedItem( ii ); Struct = (SCH_ITEM*) pickedlist->GetPickedItem( ii ); Struct->m_Flags = SELECTED; Struct->m_Flags = SELECTED; } } } if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) if( screen->m_BlockLocate.m_Command != BLOCK_DRAG ) return; return; Loading Loading @@ -653,6 +640,18 @@ 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*) (SCH_ITEM*) pickedlist->GetPickedItem( ii ); if( ( Struct->Type() == TYPE_SCH_LABEL ) || ( Struct->Type() == TYPE_SCH_GLOBALLABEL ) || ( Struct->Type() == TYPE_SCH_HIERLABEL ) ) { #undef STRUCT #define STRUCT ( (SCH_TEXT*) Struct ) if( !screen->m_BlockLocate.Inside( STRUCT->m_Pos ) ) { AddPickedItem( screen, STRUCT->m_Pos ); } } if( Struct->Type() == TYPE_SCH_COMPONENT ) if( Struct->Type() == TYPE_SCH_COMPONENT ) { { // Add all pins of the selected component to list // Add all pins of the selected component to list Loading
eeschema/dangling_ends.cpp +28 −52 Original line number Original line Diff line number Diff line Loading @@ -54,42 +54,21 @@ void TestLabelForDangling( SCH_TEXT* label, DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ); DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ); /* Returns TRUE if the point P is on the segment S. /* Returns true if the point P is on the segment S. */ * The segment is assumed horizontal or vertical. bool SegmentIntersect( wxPoint aSegStart, wxPoint aSegEnd, wxPoint aTestPoint ) */ bool SegmentIntersect( int Sx1, int Sy1, int Sx2, int Sy2, int Px1, int Py1 ) { { int Sxmin, Sxmax, Symin, Symax; wxPoint vectSeg = aSegEnd - aSegStart; // Vector from S1 to S2 wxPoint vectPoint = aTestPoint - aSegStart; // Vector from S1 to P if( Sx1 == Sx2 ) /* Line S is vertical. */ // Use long long here to avoid overflow in calculations { if( (long long)vectSeg.x * vectPoint.y - (long long)vectSeg.y * vectPoint.x ) Symin = MIN( Sy1, Sy2 ); return false; /* Cross product non-zero, vectors not parallel */ Symax = MAX( Sy1, Sy2 ); if( Px1 != Sx1 ) if( ((long long)vectSeg.x * vectPoint.x + (long long)vectSeg.y * vectPoint.y) < return FALSE; ((long long)vectPoint.x * vectPoint.x + (long long)vectPoint.y * vectPoint.y) ) return false; /* Point not on segment */ if( Py1 >= Symin && Py1 <= Symax ) return true; return TRUE; else return FALSE; } else if( Sy1 == Sy2 ) /* Line S is horizontal. */ { Sxmin = MIN( Sx1, Sx2 ); Sxmax = MAX( Sx1, Sx2 ); if( Py1 != Sy1 ) return FALSE; if( Px1 >= Sxmin && Px1 <= Sxmax ) return TRUE; else return FALSE; } else return FALSE; } } Loading Loading @@ -133,7 +112,7 @@ void WinEDA_SchematicFrame::TestDanglingEnds( SCH_ITEM* DrawList, wxDC* DC ) break; break; if( STRUCT->GetLayer() == LAYER_BUS ) if( STRUCT->GetLayer() == LAYER_BUS ) { { STRUCT->m_StartIsDangling = STRUCT->m_EndIsDangling = FALSE; STRUCT->m_StartIsDangling = STRUCT->m_EndIsDangling = false; break; break; } } break; break; Loading Loading @@ -182,7 +161,7 @@ void TestWireForDangling( SCH_LINE* DrawRef, WinEDA_SchematicFrame* frame, wxDC* DC ) wxDC* DC ) { { DanglingEndHandle* terminal_item; DanglingEndHandle* terminal_item; bool Sdangstate = TRUE, Edangstate = TRUE; bool Sdangstate = true, Edangstate = true; for( terminal_item = ItemList; terminal_item != NULL; for( terminal_item = ItemList; terminal_item != NULL; terminal_item = terminal_item->m_Pnext ) terminal_item = terminal_item->m_Pnext ) Loading @@ -192,13 +171,13 @@ void TestWireForDangling( SCH_LINE* DrawRef, WinEDA_SchematicFrame* frame, if( (DrawRef->m_Start.x == terminal_item->m_Pos.x) if( (DrawRef->m_Start.x == terminal_item->m_Pos.x) && (DrawRef->m_Start.y == terminal_item->m_Pos.y) ) && (DrawRef->m_Start.y == terminal_item->m_Pos.y) ) Sdangstate = FALSE; Sdangstate = false; if( (DrawRef->m_End.x == terminal_item->m_Pos.x) if( (DrawRef->m_End.x == terminal_item->m_Pos.x) && (DrawRef->m_End.y == terminal_item->m_Pos.y) ) && (DrawRef->m_End.y == terminal_item->m_Pos.y) ) Edangstate = FALSE; Edangstate = false; if( (Sdangstate == FALSE) && (Edangstate == FALSE) ) if( (Sdangstate == false) && (Edangstate == false) ) break; break; } } Loading @@ -220,7 +199,7 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, wxDC* DC ) wxDC* DC ) { { DanglingEndHandle* terminal_item; DanglingEndHandle* terminal_item; bool dangstate = TRUE; bool dangstate = true; for( terminal_item = ItemList; terminal_item != NULL; for( terminal_item = ItemList; terminal_item != NULL; terminal_item = terminal_item->m_Pnext ) terminal_item = terminal_item->m_Pnext ) Loading @@ -235,16 +214,14 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, case SHEET_LABEL_END: case SHEET_LABEL_END: if( ( label->m_Pos.x == terminal_item->m_Pos.x ) if( ( label->m_Pos.x == terminal_item->m_Pos.x ) && ( label->m_Pos.y == terminal_item->m_Pos.y ) ) && ( label->m_Pos.y == terminal_item->m_Pos.y ) ) dangstate = FALSE; dangstate = false; break; break; case WIRE_START_END: case WIRE_START_END: case BUS_START_END: case BUS_START_END: dangstate = !SegmentIntersect( terminal_item->m_Pos.x, dangstate = !SegmentIntersect( terminal_item->m_Pos, terminal_item->m_Pos.y, terminal_item->m_Pnext->m_Pos, terminal_item->m_Pnext->m_Pos.x, label->m_Pos ); terminal_item->m_Pnext->m_Pos.y, label->m_Pos.x, label->m_Pos.y ); terminal_item = terminal_item->m_Pnext; terminal_item = terminal_item->m_Pnext; break; break; Loading @@ -256,7 +233,7 @@ void TestLabelForDangling( SCH_TEXT* label, WinEDA_SchematicFrame* frame, break; break; } } if( dangstate == FALSE ) if( dangstate == false ) break; break; } } Loading Loading @@ -417,8 +394,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList ) { { SCH_SHEET* sheet = (SCH_SHEET*) DrawItem; SCH_SHEET* sheet = (SCH_SHEET*) DrawItem; BOOST_FOREACH( SCH_SHEET_PIN pinsheet, sheet->GetSheetPins() ) BOOST_FOREACH( SCH_SHEET_PIN pinsheet, sheet->GetSheetPins() ) { { wxASSERT( pinsheet.Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ); wxASSERT( pinsheet.Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ); item = new DanglingEndHandle( SHEET_LABEL_END ); item = new DanglingEndHandle( SHEET_LABEL_END ); Loading
eeschema/hotkeys.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -578,10 +578,13 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, wxPostEvent( this, eventMoveOrDragComponent ); wxPostEvent( this, eventMoveOrDragComponent ); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: wxPostEvent( this, eventMoveOrDragComponent ); break; case TYPE_SCH_TEXT: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) if( HK_Descr->m_Idcommand != HK_DRAG ) Loading
eeschema/netlist.cpp +1 −3 Original line number Original line Diff line number Diff line Loading @@ -1031,9 +1031,7 @@ static void SegmentToPointConnect( NETLIST_OBJECT* Jonction, continue; continue; } } if( SegmentIntersect( Segment->m_Start.x, Segment->m_Start.y, if( SegmentIntersect( Segment->m_Start, Segment->m_End, Jonction->m_Start ) ) Segment->m_End.x, Segment->m_End.y, Jonction->m_Start.x, Jonction->m_Start.y ) ) { { /* Propagation Netcode has all the objects of the same Netcode. */ /* Propagation Netcode has all the objects of the same Netcode. */ if( IsBus == 0 ) if( IsBus == 0 ) Loading
eeschema/onrightclick.cpp +9 −0 Original line number Original line Diff line number Diff line Loading @@ -342,6 +342,9 @@ void AddMenusForGLabel( wxMenu* PopMenu, SCH_GLOBALLABEL* GLabel ) msg = AddHotkeyName( _( "Move Global Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Global Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Global Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Global Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Global Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading Loading @@ -376,6 +379,9 @@ void AddMenusForHLabel( wxMenu* PopMenu, SCH_HIERLABEL* HLabel ) msg = AddHotkeyName( _( "Move Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading Loading @@ -409,6 +415,9 @@ void AddMenusForLabel( wxMenu* PopMenu, SCH_LABEL* Label ) msg = AddHotkeyName( _( "Move Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Move Label" ), s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Drag Label" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_text_xpm ); msg = AddHotkeyName( _( "Copy Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Copy Label" ), s_Schematic_Hokeys_Descr, HK_COPY_COMPONENT_OR_LABEL ); HK_COPY_COMPONENT_OR_LABEL ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_COPY_ITEM, msg, copy_button ); Loading