board_commit.cpp: Avoid generating a wxAssert message in QA test.
In QA test, frame and selTool are nullptr. So we cannot use wxCHECK( frame && selTool,...) because it breaks the QA test. We just test frame and selTool when needed.
This commit is contained in:
parent
3f68b7c5c1
commit
8d44c770a8
|
@ -172,15 +172,18 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
bool solderMaskDirty = false;
|
bool solderMaskDirty = false;
|
||||||
bool autofillZones = false;
|
bool autofillZones = false;
|
||||||
|
|
||||||
wxCHECK( frame && selTool, /* void */ );
|
if( Empty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Note:
|
||||||
|
// frame == nullptr happens in QA tests
|
||||||
|
// in this case m_isBoardEditor and m_isFootprintEditor are set to false
|
||||||
|
// But we also test frame == nullptr mainly to make Coverity happy
|
||||||
|
|
||||||
std::vector<BOARD_ITEM*> bulkAddedItems;
|
std::vector<BOARD_ITEM*> bulkAddedItems;
|
||||||
std::vector<BOARD_ITEM*> bulkRemovedItems;
|
std::vector<BOARD_ITEM*> bulkRemovedItems;
|
||||||
std::vector<BOARD_ITEM*> itemsChanged;
|
std::vector<BOARD_ITEM*> itemsChanged;
|
||||||
|
|
||||||
if( Empty() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if( m_isBoardEditor
|
if( m_isBoardEditor
|
||||||
&& !( aCommitFlags & ZONE_FILL_OP )
|
&& !( aCommitFlags & ZONE_FILL_OP )
|
||||||
&& ( frame && frame->GetPcbNewSettings()->m_AutoRefillZones ) )
|
&& ( frame && frame->GetPcbNewSettings()->m_AutoRefillZones ) )
|
||||||
|
@ -221,7 +224,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
wxASSERT( ent.m_item->Type() == PCB_FOOTPRINT_T );
|
wxASSERT( ent.m_item->Type() == PCB_FOOTPRINT_T );
|
||||||
wxASSERT( ent.m_copy->Type() == PCB_FOOTPRINT_T );
|
wxASSERT( ent.m_copy->Type() == PCB_FOOTPRINT_T );
|
||||||
|
|
||||||
if( !( aCommitFlags & SKIP_UNDO ) )
|
if( !( aCommitFlags & SKIP_UNDO ) && frame )
|
||||||
{
|
{
|
||||||
ITEM_PICKER itemWrapper( nullptr, ent.m_item, UNDO_REDO::CHANGED );
|
ITEM_PICKER itemWrapper( nullptr, ent.m_item, UNDO_REDO::CHANGED );
|
||||||
itemWrapper.SetLink( ent.m_copy );
|
itemWrapper.SetLink( ent.m_copy );
|
||||||
|
@ -243,7 +246,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
{
|
{
|
||||||
case CHT_ADD:
|
case CHT_ADD:
|
||||||
{
|
{
|
||||||
if( selTool->GetEnteredGroup() && !boardItem->GetParentGroup() )
|
if( selTool && selTool->GetEnteredGroup() && !boardItem->GetParentGroup() )
|
||||||
selTool->GetEnteredGroup()->AddItem( boardItem );
|
selTool->GetEnteredGroup()->AddItem( boardItem );
|
||||||
|
|
||||||
if( m_isFootprintEditor )
|
if( m_isFootprintEditor )
|
||||||
|
@ -300,7 +303,9 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
|
|
||||||
if( boardItem->IsSelected() )
|
if( boardItem->IsSelected() )
|
||||||
{
|
{
|
||||||
selTool->RemoveItemFromSel( boardItem, true /* quiet mode */ );
|
if( selTool )
|
||||||
|
selTool->RemoveItemFromSel( boardItem, true /* quiet mode */ );
|
||||||
|
|
||||||
itemsDeselected = true;
|
itemsDeselected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,10 +513,13 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
connectivity->ClearLocalRatsnest();
|
connectivity->ClearLocalRatsnest();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( solderMaskDirty )
|
if( frame )
|
||||||
frame->HideSolderMask();
|
{
|
||||||
|
if( solderMaskDirty )
|
||||||
|
frame->HideSolderMask();
|
||||||
|
|
||||||
frame->GetCanvas()->RedrawRatsnest();
|
frame->GetCanvas()->RedrawRatsnest();
|
||||||
|
}
|
||||||
|
|
||||||
// Log undo items for any connectivity changes
|
// Log undo items for any connectivity changes
|
||||||
for( size_t i = num_changes; i < m_changes.size(); ++i )
|
for( size_t i = num_changes; i < m_changes.size(); ++i )
|
||||||
|
@ -539,7 +547,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_isBoardEditor && !( aCommitFlags & SKIP_UNDO ) )
|
if( m_isBoardEditor && !( aCommitFlags & SKIP_UNDO ) && frame )
|
||||||
{
|
{
|
||||||
if( aCommitFlags & APPEND_UNDO )
|
if( aCommitFlags & APPEND_UNDO )
|
||||||
frame->AppendCopyToUndoList( undoList, UNDO_REDO::UNSPECIFIED );
|
frame->AppendCopyToUndoList( undoList, UNDO_REDO::UNSPECIFIED );
|
||||||
|
|
Loading…
Reference in New Issue