Commit cb35b563 authored by Dick Hollenbeck's avatar Dick Hollenbeck
Browse files

user defined eeschema component fields should fill next available component field slot

parents e2d4b16b 43d7b723
Loading
Loading
Loading
Loading
+12 −9
Original line number Original line Diff line number Diff line
@@ -703,17 +703,20 @@ int ReadPartDescr( wxWindow* frame, char* Line, FILE* f, wxString& aMsgDiag,


            if( fieldNdx >= component->GetFieldCount() )
            if( fieldNdx >= component->GetFieldCount() )
            {
            {
                // add as many fields as needed so the m_FieldId's are
                // The first MANDATOR_FIELDS _must_ be constructed within
                // contiguous, no gaps.
                // the SCH_COMPONENT constructor.  This assert is simply here
                while( fieldNdx >= component->GetFieldCount() )
                // to guard against a change in that constructor.
                {
                wxASSERT( component->GetFieldCount() >= MANDATORY_FIELDS );
                    int       newNdx = component->GetFieldCount();

                // Ignore the _supplied_ fieldNdx.  It is not important anymore
                // if within the user defined fields region (i.e. >= MANDATORY_FIELDS).
                // We freely renumber the index to fit the next available field slot.


                    SCH_FIELD field( wxPoint( 0, 0 ), newNdx, component,
                fieldNdx = component->GetFieldCount();  // new has this index after insertion
                                     fieldName );

                SCH_FIELD field( wxPoint( 0, 0 ), fieldNdx, component, fieldName );
                component->AddField( field );
                component->AddField( field );
            }
            }
            }
            else
            else
            {
            {
                component->GetField( fieldNdx )->m_Name = fieldName;
                component->GetField( fieldNdx )->m_Name = fieldName;
+3 −1
Original line number Original line Diff line number Diff line
@@ -24,7 +24,9 @@ enum NumFieldType {
    FOOTPRINT,              ///< Field Name Module PCB, i.e. "16DIP300"
    FOOTPRINT,              ///< Field Name Module PCB, i.e. "16DIP300"
    DATASHEET,              ///< name of datasheet
    DATASHEET,              ///< name of datasheet


    MANDATORY_FIELDS,       ///< the first 4 are mandatory or fixed, and instantiated in FIELD constructors
    /// The first 4 are mandatory, and must be instantiated in SCH_COMPONENT
    /// and LIB_COMPONENT constructors
    MANDATORY_FIELDS,


    FIELD1 = MANDATORY_FIELDS,
    FIELD1 = MANDATORY_FIELDS,
    FIELD2,
    FIELD2,