From be62a1ade651ad9ba15ff5d78dfe9fea7ae12671 Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Wed, 10 Aug 2016 09:44:19 -0400 Subject: [PATCH] Eeschema: fix broken component reference field in hierarchies. (fixes lp:1572812) --- eeschema/dialogs/dialog_edit_one_field.cpp | 21 +++++++++++++++++++++ eeschema/dialogs/dialog_edit_one_field.h | 6 +----- eeschema/edit_component_in_schematic.cpp | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/eeschema/dialogs/dialog_edit_one_field.cpp b/eeschema/dialogs/dialog_edit_one_field.cpp index ec03c5d5e7..4341b16b30 100644 --- a/eeschema/dialogs/dialog_edit_one_field.cpp +++ b/eeschema/dialogs/dialog_edit_one_field.cpp @@ -252,3 +252,24 @@ DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD( SCH_BASE_FRAME* aParent, init(); } + + +void DIALOG_SCH_EDIT_ONE_FIELD::UpdateField( SCH_FIELD* aField, SCH_SHEET_PATH* aSheetPath ) +{ + wxASSERT( aField != NULL || aField->Type() != SCH_FIELD_T ); + + if( aField->GetId() == REFERENCE ) + { + wxASSERT( aSheetPath != NULL ); + + SCH_COMPONENT* component = dynamic_cast< SCH_COMPONENT* >( aField->GetParent() ); + + wxASSERT( component != NULL ); + + if( component != NULL ) + component->SetRef( aSheetPath, m_text ); + } + + aField->SetText( m_text ); + updateText( aField ); +} diff --git a/eeschema/dialogs/dialog_edit_one_field.h b/eeschema/dialogs/dialog_edit_one_field.h index 85d0856bf4..d12e47ba1e 100644 --- a/eeschema/dialogs/dialog_edit_one_field.h +++ b/eeschema/dialogs/dialog_edit_one_field.h @@ -153,11 +153,7 @@ public: ~DIALOG_SCH_EDIT_ONE_FIELD() {} - void UpdateField( SCH_FIELD* aField ) - { - aField->SetText( m_text ); - updateText( aField ); - } + void UpdateField( SCH_FIELD* aField, SCH_SHEET_PATH* aSheetPath ); }; #endif // DIALOG_EDIT_ONE_FIELD_H_ diff --git a/eeschema/edit_component_in_schematic.cpp b/eeschema/edit_component_in_schematic.cpp index e2ddb0afc0..200bf27052 100644 --- a/eeschema/edit_component_in_schematic.cpp +++ b/eeschema/edit_component_in_schematic.cpp @@ -79,7 +79,7 @@ void SCH_EDIT_FRAME::EditComponentFieldText( SCH_FIELD* aField ) return; } - dlg.UpdateField( aField ); + dlg.UpdateField( aField, m_CurrentSheet ); m_canvas->MoveCursorToCrossHair(); m_canvas->SetIgnoreMouseEvents( false ); OnModify();