Don't double-move module text when parent is also selected.
Fixes: lp:1776871 * https://bugs.launchpad.net/kicad/+bug/1776871
This commit is contained in:
parent
11c248a463
commit
feebb3a36c
|
@ -416,11 +416,9 @@ int EDIT_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
// Main loop: keep receiving events
|
// Main loop: keep receiving events
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
bool matchingAction = evt->IsAction( &PCB_ACTIONS::editActivate )
|
if( evt->IsAction( &PCB_ACTIONS::editActivate ) ||
|
||||||
|| evt->IsAction( &PCB_ACTIONS::move );
|
evt->IsAction( &PCB_ACTIONS::move ) ||
|
||||||
|
evt->IsMotion() || evt->IsDrag( BUT_LEFT ) )
|
||||||
if( matchingAction
|
|
||||||
|| evt->IsMotion() || evt->IsDrag( BUT_LEFT ) )
|
|
||||||
{
|
{
|
||||||
if( selection.Empty() )
|
if( selection.Empty() )
|
||||||
break;
|
break;
|
||||||
|
@ -433,7 +431,7 @@ int EDIT_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
controls->ForceCursorPosition( true, m_cursor );
|
controls->ForceCursorPosition( true, m_cursor );
|
||||||
|
|
||||||
VECTOR2I movement( m_cursor - prevPos );
|
VECTOR2I movement( m_cursor - prevPos );
|
||||||
selection.SetReferencePoint(m_cursor);
|
selection.SetReferencePoint( m_cursor );
|
||||||
|
|
||||||
totalMovement += movement;
|
totalMovement += movement;
|
||||||
prevPos = m_cursor;
|
prevPos = m_cursor;
|
||||||
|
@ -441,6 +439,10 @@ int EDIT_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
// Drag items to the current cursor position
|
// Drag items to the current cursor position
|
||||||
for( auto item : selection )
|
for( auto item : selection )
|
||||||
{
|
{
|
||||||
|
// Don't double move footprint pads, fields, etc.
|
||||||
|
if( item->GetParent() && item->GetParent()->IsSelected() )
|
||||||
|
continue;
|
||||||
|
|
||||||
static_cast<BOARD_ITEM*>( item )->Move( movement );
|
static_cast<BOARD_ITEM*>( item )->Move( movement );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,7 +465,13 @@ int EDIT_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
// Save items, so changes can be undone
|
// Save items, so changes can be undone
|
||||||
for( auto item : selection )
|
for( auto item : selection )
|
||||||
|
{
|
||||||
|
// Don't double move footprint pads, fields, etc.
|
||||||
|
if( item->GetParent() && item->GetParent()->IsSelected() )
|
||||||
|
continue;
|
||||||
|
|
||||||
m_commit->Modify( item );
|
m_commit->Modify( item );
|
||||||
|
}
|
||||||
|
|
||||||
m_cursor = controls->GetCursorPosition();
|
m_cursor = controls->GetCursorPosition();
|
||||||
|
|
||||||
|
@ -476,7 +484,13 @@ int EDIT_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
// Drag items to the current cursor position
|
// Drag items to the current cursor position
|
||||||
for( auto item : selection )
|
for( auto item : selection )
|
||||||
|
{
|
||||||
|
// Don't double move footprint pads, fields, etc.
|
||||||
|
if( item->GetParent() && item->GetParent()->IsSelected() )
|
||||||
|
continue;
|
||||||
|
|
||||||
static_cast<BOARD_ITEM*>( item )->Move( delta );
|
static_cast<BOARD_ITEM*>( item )->Move( delta );
|
||||||
|
}
|
||||||
|
|
||||||
selection.SetReferencePoint( m_cursor );
|
selection.SetReferencePoint( m_cursor );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue