Fixes dangling ends and rotation when labels/texts are converted into each other

CHANGED: Eeschema: Preserve text justification when switching text types

Closes https://gitlab.com/kicad/code/kicad/-/merge_requests/86
This commit is contained in:
Karl Zeilhofer 2020-02-01 12:22:47 +01:00 committed by Ian McInerney
parent 8b3c0a941c
commit 5b58dbc980
1 changed files with 29 additions and 0 deletions

View File

@ -34,6 +34,7 @@
#include <sch_draw_panel.h>
#include <confirm.h>
#include <sch_edit_frame.h>
#include <sch_view.h>
#include <kicad_device_context.h>
#include <general.h>
@ -238,6 +239,34 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent )
if( screen->GetCurItem() == text )
screen->SetCurItem( newtext );
// handle dangling end for the different label/text types
if( type == SCH_TEXT_T )
{
if( newtext->IsDangling() )
{
newtext->SetIsDangling( false );
GetCanvas()->GetView()->Update( newtext, KIGFX::REPAINT );
}
}
else
{
newtext->SetIsDangling( true );
}
TestDanglingEnds();
// fix rotation of the converted label, only needed for horizontal labels:
bool newTypeIsBig = newtext->Type() == SCH_GLOBAL_LABEL_T ||
newtext->Type() == SCH_HIERARCHICAL_LABEL_T;
bool oldTypeIsBig = text->Type() == SCH_GLOBAL_LABEL_T ||
text->Type() == SCH_HIERARCHICAL_LABEL_T;
if ( ( newTypeIsBig && !oldTypeIsBig ) ||
( !newTypeIsBig && oldTypeIsBig ) )
{
newtext->MirrorY( newtext->GetPosition().x );
}
if( text->IsNew() )
{
// if the previous text is new, no undo command to prepare here