diff --git a/eeschema/sch_reference_list.cpp b/eeschema/sch_reference_list.cpp index 868539c0b7..52f25b4801 100644 --- a/eeschema/sch_reference_list.cpp +++ b/eeschema/sch_reference_list.cpp @@ -852,6 +852,7 @@ void SCH_REFERENCE::Split() std::string refText = GetRefStr(); m_numRef = -1; + m_numRefStr.Clear(); int ll = refText.length() - 1; @@ -883,7 +884,8 @@ void SCH_REFERENCE::Split() m_numRef = atoi( cp ); } - refText.erase( ll+1 ); // delete from ll+1 to end + m_numRefStr = std::string( refText, ll + 1 ); + refText.erase( ll + 1 ); break; } } @@ -967,4 +969,4 @@ void SCH_REFERENCE_LIST::Show( const char* aPrefix ) schref.m_numRef, TO_UTF8( schref.GetLibPart()->GetName() ) ); } } -#endif \ No newline at end of file +#endif diff --git a/eeschema/sch_reference_list.h b/eeschema/sch_reference_list.h index 7d355796c0..8572784e96 100644 --- a/eeschema/sch_reference_list.h +++ b/eeschema/sch_reference_list.h @@ -187,7 +187,7 @@ public: if( GetLibPart() && GetLibPart()->IsPower() ) ref = wxT( "0" ); - return ref << m_numRef; + return m_numRefStr.IsEmpty() ? ( ref << m_numRef ) : ( ref << m_numRefStr ); } int CompareValue( const SCH_REFERENCE& item ) const @@ -245,6 +245,7 @@ private: int m_sheetNum; ///< The sheet number for the reference. KIID m_symbolUuid; ///< UUID of the symbol. int m_numRef; ///< The numeric part of the reference designator. + wxString m_numRefStr; ///< The numeric part in original string form (may have leading zeroes) int m_flag; };