libedit: Unselect before re-syncing

The library alias may change so we need to ensure that the underlying
selected lib_id is not maintained across regenerations.

Fixes https://gitlab.com/kicad/code/kicad/issues/5144
This commit is contained in:
Seth Hillbrand 2020-08-26 10:09:40 -07:00
parent 18490162f7
commit 8d9bb7a63e
1 changed files with 7 additions and 12 deletions

View File

@ -1653,23 +1653,18 @@ void LIB_EDIT_FRAME::SyncLibraries( bool aShowProgress )
{ {
wxDataViewItem found; wxDataViewItem found;
m_treePane->GetLibTree()->Unselect();
m_treePane->Regenerate();
if( selected.IsValid() ) if( selected.IsValid() )
{ {
// Check if the previously selected item is still valid,
// if not - it has to be unselected to prevent crash
found = m_libMgr->GetAdapter()->FindItem( selected ); found = m_libMgr->GetAdapter()->FindItem( selected );
if( !found ) if( !found )
m_treePane->GetLibTree()->Unselect(); {
} selected.SetLibItemName( "" );
found = m_libMgr->GetAdapter()->FindItem( selected );
m_treePane->Regenerate(); }
// Try to select the parent library, in case the part is not found
if( !found && selected.IsValid() )
{
selected.SetLibItemName( "" );
found = m_libMgr->GetAdapter()->FindItem( selected );
if( found ) if( found )
m_treePane->GetLibTree()->SelectLibId( selected ); m_treePane->GetLibTree()->SelectLibId( selected );