Restore pin selection after PlacePin().

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16401
This commit is contained in:
Jeff Young 2023-12-22 14:59:40 +00:00
parent 8b344b13e5
commit eca22b05b3
1 changed files with 11 additions and 5 deletions

View File

@ -329,12 +329,18 @@ bool SYMBOL_EDITOR_MOVE_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, SCH_COM
try
{
LIB_PIN* curr_pin = (LIB_PIN*) selection.Front();
// PlacePin() will clear the current selection, so we need to reset
// flags of the selected pin here:
if( !pinTool->PlacePin( curr_pin ) )
restore_state = true;
if( pinTool->PlacePin( curr_pin ) )
{
// PlacePin() clears the current selection, which we don't want. Not only
// is it a poor user experience, but it also prevents us from doing the
// proper cleanup at the end of this routine (ie: clearing the edit flags).
m_selectionTool->AddItemToSel( curr_pin, true /*quiet mode*/ );
}
else
curr_pin->ClearEditFlags();
{
restore_state = true;
}
}
catch( const boost::bad_pointer& e )
{