diff --git a/eeschema/dialogs/dialog_label_properties.cpp b/eeschema/dialogs/dialog_label_properties.cpp index 56a7fd4805..354e42e81f 100644 --- a/eeschema/dialogs/dialog_label_properties.cpp +++ b/eeschema/dialogs/dialog_label_properties.cpp @@ -548,11 +548,16 @@ bool DIALOG_LABEL_PROPERTIES::TransferDataFromWindow() selectedSpinStyle = TEXT_SPIN_STYLE::BOTTOM; if( m_currentLabel->AutoRotateOnPlacementSupported() ) + { + SCH_EDIT_FRAME* frame = static_cast( m_parentFrame ); m_currentLabel->SetAutoRotateOnPlacement( m_autoRotate->IsChecked() ); + frame->AutoRotateItem( frame->GetScreen(), m_currentLabel ); + } else m_currentLabel->SetAutoRotateOnPlacement( false ); - if( m_currentLabel->GetTextSpinStyle() != selectedSpinStyle ) + if( !m_currentLabel->AutoRotateOnPlacement() + && m_currentLabel->GetTextSpinStyle() != selectedSpinStyle ) m_currentLabel->SetTextSpinStyle( selectedSpinStyle ); if( doAutoplace ) diff --git a/eeschema/tools/sch_move_tool.cpp b/eeschema/tools/sch_move_tool.cpp index b156c33393..9dbd1822fb 100644 --- a/eeschema/tools/sch_move_tool.cpp +++ b/eeschema/tools/sch_move_tool.cpp @@ -931,6 +931,10 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent ) if( m_isDrag && !isSlice ) trimDanglingLines(); + // Auto-rotate any moved labels + for( EDA_ITEM* item : selection ) + m_frame->AutoRotateItem( m_frame->GetScreen(), static_cast( item ) ); + m_frame->RecalculateConnections( LOCAL_CLEANUP ); m_frame->OnModify(); }