From 616e9b4f4b17a38d542bfda52ed8d1a77e4da2a3 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Tue, 24 May 2022 00:05:06 +0100 Subject: [PATCH] Be cognizant of symbol transform when setting justification. Fixes https://gitlab.com/kicad/code/kicad/issues/11465 --- .../dialog_global_edit_text_and_graphics.cpp | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp b/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp index ec215f2ab8..46b0f18b80 100644 --- a/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp +++ b/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp @@ -249,6 +249,7 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( const SCH_SHEET_PATH& aS return; } + SCH_SYMBOL* symbol = dynamic_cast( aItem->GetParent() ); EDA_TEXT* eda_text = dynamic_cast( aItem ); SCH_TEXT* sch_text = dynamic_cast( aItem ); SCH_JUNCTION* junction = dynamic_cast( aItem ); @@ -266,10 +267,34 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( const SCH_SHEET_PATH& aS eda_text->SetTextColor( m_textColorSwatch->GetSwatchColor() ); if( m_hAlign->GetStringSelection() != INDETERMINATE_ACTION ) - eda_text->SetHorizJustify( EDA_TEXT::MapHorizJustify( m_hAlign->GetSelection() - 1 ) ); + { + GR_TEXT_H_ALIGN_T hAlign = EDA_TEXT::MapHorizJustify( m_hAlign->GetSelection() - 1 ); + + if( symbol && symbol->GetTransform().x1 < 0 ) + { + if( hAlign == GR_TEXT_H_ALIGN_LEFT ) + hAlign = GR_TEXT_H_ALIGN_RIGHT; + else if( hAlign == GR_TEXT_H_ALIGN_RIGHT ) + hAlign = GR_TEXT_H_ALIGN_LEFT; + } + + eda_text->SetHorizJustify( hAlign ); + } if( m_vAlign->GetStringSelection() != INDETERMINATE_ACTION ) - eda_text->SetVertJustify( EDA_TEXT::MapVertJustify( m_vAlign->GetSelection() - 1 ) ); + { + GR_TEXT_V_ALIGN_T vAlign = EDA_TEXT::MapVertJustify( m_vAlign->GetSelection() - 1 ); + + if( symbol && symbol->GetTransform().y1 < 0 ) + { + if( vAlign == GR_TEXT_V_ALIGN_TOP ) + vAlign = GR_TEXT_V_ALIGN_BOTTOM; + else if( vAlign == GR_TEXT_V_ALIGN_BOTTOM ) + vAlign = GR_TEXT_V_ALIGN_TOP; + } + + eda_text->SetVertJustify( vAlign ); + } if( m_visible->Get3StateValue() != wxCHK_UNDETERMINED ) eda_text->SetVisible( m_visible->GetValue() );