Schematic: handle aligning unaligned sheet pins in aligned sheet

Also fix a rounding bug.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15050
This commit is contained in:
Mike Williams 2023-08-03 11:11:34 -04:00
parent 5b335f1c4e
commit 22c609fb7b
2 changed files with 5 additions and 3 deletions

View File

@ -104,8 +104,8 @@ VECTOR2I GRID_HELPER::AlignGrid( const VECTOR2I& aPoint, const VECTOR2D& aGrid,
VECTOR2I GRID_HELPER::computeNearest( const VECTOR2I& aPoint, const VECTOR2I& aGrid,
const VECTOR2I& aOffset ) const
{
return VECTOR2I( KiROUND( ( aPoint.x - aOffset.x ) / aGrid.x ) * aGrid.x + aOffset.x,
KiROUND( ( aPoint.y - aOffset.y ) / aGrid.y ) * aGrid.y + aOffset.y );
return VECTOR2I( KiROUND( (double) ( aPoint.x - aOffset.x ) / aGrid.x ) * aGrid.x + aOffset.x,
KiROUND( (double) ( aPoint.y - aOffset.y ) / aGrid.y ) * aGrid.y + aOffset.y );
}

View File

@ -1687,7 +1687,7 @@ int SCH_MOVE_TOOL::AlignElements( const TOOL_EVENT& aEvent )
{
SCH_ITEM* schItem = static_cast<SCH_ITEM*>( item );
std::vector<VECTOR2I> connections = schItem->GetConnectionPoints();
EDA_ITEMS drag_items{ item };
EDA_ITEMS drag_items;
for( const VECTOR2I& point : connections )
getConnectedDragItems( &commit, schItem, point, drag_items );
@ -1711,6 +1711,8 @@ int SCH_MOVE_TOOL::AlignElements( const TOOL_EVENT& aEvent )
if( most_common != VECTOR2I( 0, 0 ) )
{
doMoveItem( item, most_common );
for( EDA_ITEM* dragItem : drag_items )
{
if( dragItem->GetParent() && dragItem->GetParent()->IsSelected() )