Leave originally selected items selected after cancelled move.

Fixes https://gitlab.com/kicad/code/kicad/issues/12024
This commit is contained in:
Jeff Young 2022-07-21 13:09:23 +01:00
parent 9652dcf96d
commit 004abcd370
1 changed files with 6 additions and 6 deletions

View File

@ -375,7 +375,9 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference )
if( boardItem ) if( boardItem )
{ {
orig_items.push_back( boardItem ); if( !is_hover )
orig_items.push_back( boardItem );
sel_items.push_back( boardItem ); sel_items.push_back( boardItem );
} }
@ -736,12 +738,10 @@ int EDIT_TOOL::doMoveSelection( TOOL_EVENT aEvent, bool aPickReference )
// Remove the dynamic ratsnest from the screen // Remove the dynamic ratsnest from the screen
m_toolMgr->RunAction( PCB_ACTIONS::hideDynamicRatsnest, true ); m_toolMgr->RunAction( PCB_ACTIONS::hideDynamicRatsnest, true );
// Unselect all items to update flags // Unselect all items to clear selection flags and then re-select the originally selected
// items.
m_toolMgr->RunAction( PCB_ACTIONS::selectionClear, true ); m_toolMgr->RunAction( PCB_ACTIONS::selectionClear, true );
m_toolMgr->RunAction( PCB_ACTIONS::selectItems, true, &orig_items );
// Reselect items if they were already selected and we completed the move
if( !is_hover && !restore_state )
m_toolMgr->RunAction( PCB_ACTIONS::selectItems, true, &orig_items );
editFrame->PopTool( tool ); editFrame->PopTool( tool );
editFrame->GetCanvas()->SetCurrentCursor( KICURSOR::ARROW ); editFrame->GetCanvas()->SetCurrentCursor( KICURSOR::ARROW );