Prevent crash when appearance panel defines no view presets.

This commit is contained in:
Jeff Young 2020-08-19 23:46:57 +01:00
parent cffbc34f12
commit 21a9f2ecfe
1 changed files with 14 additions and 11 deletions

View File

@ -46,7 +46,8 @@ PCB_BASE_EDIT_FRAME::PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent,
PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ), PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ),
m_rotationAngle( 900 ), m_undoRedoBlocked( false ), m_rotationAngle( 900 ), m_undoRedoBlocked( false ),
m_Layers( nullptr ), m_Layers( nullptr ),
m_selectionFilterPanel( nullptr ) m_selectionFilterPanel( nullptr ),
m_appearancePanel( nullptr )
{ {
if( !GFootprintList.GetCount() ) if( !GFootprintList.GetCount() )
{ {
@ -84,20 +85,22 @@ bool PCB_BASE_EDIT_FRAME::TryBefore( wxEvent& aEvent )
if( !s_switcherShown && wxGetKeyState( WXK_RAW_CONTROL ) && wxGetKeyState( WXK_TAB ) ) if( !s_switcherShown && wxGetKeyState( WXK_RAW_CONTROL ) && wxGetKeyState( WXK_TAB ) )
{ {
const wxArrayString& mru = m_appearancePanel->GetLayerPresetsMRU(); if( m_appearancePanel )
{
const wxArrayString& mru = m_appearancePanel->GetLayerPresetsMRU();
EDA_VIEW_SWITCHER switcher( this, mru );
EDA_VIEW_SWITCHER switcher( this, mru ); s_switcherShown = true;
switcher.ShowModal();
s_switcherShown = false;
s_switcherShown = true; int idx = switcher.GetSelection();
switcher.ShowModal();
s_switcherShown = false;
int idx = switcher.GetSelection(); if( idx >= 0 && idx < (int) mru.size() )
m_appearancePanel->ApplyLayerPreset( mru[idx] );
if( idx >= 0 && idx < (int) mru.size() ) return true;
m_appearancePanel->ApplyLayerPreset( mru[idx] ); }
return true;
} }
return PCB_BASE_FRAME::TryBefore( aEvent ); return PCB_BASE_FRAME::TryBefore( aEvent );