diff --git a/eeschema/files-io.cpp b/eeschema/files-io.cpp index dded6c6e0a..645bbd0b2a 100644 --- a/eeschema/files-io.cpp +++ b/eeschema/files-io.cpp @@ -578,7 +578,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector& aFileSet, in TestDanglingEnds(); - UpdateHierarchyNavigator( false ); + UpdateHierarchyNavigator( false, true ); wxCommandEvent changedEvt( EDA_EVT_SCHEMATIC_CHANGED ); ProcessEventLocally( changedEvt ); @@ -1424,7 +1424,7 @@ bool SCH_EDIT_FRAME::importFile( const wxString& aFileName, int aFileType, SetSheetNumberAndCount(); SyncView(); - UpdateHierarchyNavigator(); + UpdateHierarchyNavigator( false, true ); wxCommandEvent e( EDA_EVT_SCHEMATIC_CHANGED ); ProcessEventLocally( e ); diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index fe24c92a8c..4ba2621179 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -1229,10 +1229,10 @@ void SCH_EDIT_FRAME::OnUpdatePCB() } -void SCH_EDIT_FRAME::UpdateHierarchyNavigator( bool aRefreshNetNavigator ) +void SCH_EDIT_FRAME::UpdateHierarchyNavigator( bool aRefreshNetNavigator, bool aClear ) { m_toolManager->GetTool()->CleanHistory(); - m_hierarchy->UpdateHierarchyTree(); + m_hierarchy->UpdateHierarchyTree( aClear ); if( aRefreshNetNavigator ) RefreshNetNavigator(); diff --git a/eeschema/sch_edit_frame.h b/eeschema/sch_edit_frame.h index 43ffeb3a64..32bebb7cad 100644 --- a/eeschema/sch_edit_frame.h +++ b/eeschema/sch_edit_frame.h @@ -244,7 +244,7 @@ public: /** * Update the hierarchy navigation tree and history */ - void UpdateHierarchyNavigator( bool aRefreshNetNavigator = true ); + void UpdateHierarchyNavigator( bool aRefreshNetNavigator = true, bool aClear = false ); /** * Update the hierarchy navigation tree labels. diff --git a/eeschema/widgets/hierarchy_pane.cpp b/eeschema/widgets/hierarchy_pane.cpp index 97db1d8768..743f7a614e 100644 --- a/eeschema/widgets/hierarchy_pane.cpp +++ b/eeschema/widgets/hierarchy_pane.cpp @@ -209,7 +209,7 @@ void HIERARCHY_PANE::UpdateHierarchySelection() } -void HIERARCHY_PANE::UpdateHierarchyTree() +void HIERARCHY_PANE::UpdateHierarchyTree( bool aClear ) { Freeze(); @@ -248,7 +248,9 @@ void HIERARCHY_PANE::UpdateHierarchyTree() } }; - if( !m_tree->IsEmpty() ) + // If we are clearing the tree, don't try to get expanded nodes as they + // might be deleted + if( !aClear && !m_tree->IsEmpty() ) getExpandedNodes( m_tree->GetRootItem() ); m_list.clear(); diff --git a/eeschema/widgets/hierarchy_pane.h b/eeschema/widgets/hierarchy_pane.h index 99a53f8dc5..f69dfe734a 100644 --- a/eeschema/widgets/hierarchy_pane.h +++ b/eeschema/widgets/hierarchy_pane.h @@ -84,7 +84,7 @@ public: /** * Update the hierarchical tree of the schematic. */ - void UpdateHierarchyTree(); + void UpdateHierarchyTree( bool aClear = false ); /** * Updates the tree's selection to match current page