Cleanup after cancelled add text dialog.

Fixes: lp:1838452
* https://bugs.launchpad.net/kicad/+bug/1838452
This commit is contained in:
Jeff Young 2019-07-31 23:09:55 -06:00
parent cd4983f092
commit 3f28a1d1cb
1 changed files with 13 additions and 18 deletions

View File

@ -291,9 +291,10 @@ int DRAWING_TOOL::PlaceText( const TOOL_EVENT& aEvent )
auto cleanup = [&] () { auto cleanup = [&] () {
m_toolMgr->RunAction( PCB_ACTIONS::selectionClear, true ); m_toolMgr->RunAction( PCB_ACTIONS::selectionClear, true );
m_controls->ForceCursorPosition( false );
m_controls->ShowCursor( true );
m_controls->SetAutoPan( false ); m_controls->SetAutoPan( false );
m_controls->CaptureCursor( false ); m_controls->CaptureCursor( false );
m_controls->ShowCursor( true );
delete text; delete text;
text = NULL; text = NULL;
}; };
@ -392,23 +393,16 @@ int DRAWING_TOOL::PlaceText( const TOOL_EVENT& aEvent )
} ); } );
if( textPcb->GetText().IsEmpty() ) if( textPcb->GetText().IsEmpty() )
{
m_controls->ForceCursorPosition( false );
delete textPcb; delete textPcb;
}
else else
text = textPcb; text = textPcb;
} }
if( text == NULL ) if( text )
continue; {
m_controls->WarpCursor( text->GetPosition(), true );
m_controls->WarpCursor( text->GetPosition(), true ); m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text );
m_controls->ForceCursorPosition( false ); }
m_controls->CaptureCursor( true );
m_controls->SetAutoPan( true );
m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text );
} }
if( placing ) if( placing )
@ -421,12 +415,13 @@ int DRAWING_TOOL::PlaceText( const TOOL_EVENT& aEvent )
m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text ); m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text );
m_controls->CaptureCursor( false ); text = nullptr;
m_controls->SetAutoPan( false );
m_controls->ShowCursor( true );
text = NULL;
} }
m_controls->ForceCursorPosition( false );
m_controls->ShowCursor( true );
m_controls->CaptureCursor( text != nullptr );
m_controls->SetAutoPan( text != nullptr );
} }
else if( text && evt->IsMotion() ) else if( text && evt->IsMotion() )
{ {