diff --git a/pcbnew/footprint.cpp b/pcbnew/footprint.cpp index 9e6dee3cc9..38feb8f00b 100644 --- a/pcbnew/footprint.cpp +++ b/pcbnew/footprint.cpp @@ -641,6 +641,7 @@ void FOOTPRINT::Remove( BOARD_ITEM* aBoardItem, REMOVE_MODE aMode ) case PCB_FP_DIM_LEADER_T: case PCB_FP_SHAPE_T: case PCB_FP_TEXTBOX_T: + case PCB_BITMAP_T: for( auto it = m_drawings.begin(); it != m_drawings.end(); ++it ) { if( *it == aBoardItem ) diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index ebd7aad635..bb01cd8799 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -66,6 +66,7 @@ using namespace std::placeholders; #include #include #include +#include const unsigned int EDIT_TOOL::COORDS_PADDING = pcbIUScale.mmToIU( 20 ); @@ -1864,6 +1865,21 @@ void EDIT_TOOL::DeleteItems( const PCB_SELECTION& aItems, bool aIsCut ) break; } + case PCB_BITMAP_T: + if( IsFootprintEditor() ) + { + PCB_BITMAP* fp_bitmap = static_cast( item ); + FOOTPRINT* parent = static_cast( item->GetParent() ); + + m_commit->Modify( parent ); + getView()->Remove( fp_bitmap ); + parent->Remove( fp_bitmap ); + } + else + m_commit->Remove( item ); + + break; + case PCB_PAD_T: if( IsFootprintEditor() || frame()->GetPcbNewSettings()->m_AllowFreePads ) { diff --git a/pcbnew/tools/pcb_selection_tool.cpp b/pcbnew/tools/pcb_selection_tool.cpp index 7d227504e1..5926c8b1a8 100644 --- a/pcbnew/tools/pcb_selection_tool.cpp +++ b/pcbnew/tools/pcb_selection_tool.cpp @@ -2240,12 +2240,17 @@ bool PCB_SELECTION_TOOL::itemPassesFilter( BOARD_ITEM* aItem, bool aMultiSelect case PCB_FP_SHAPE_T: case PCB_SHAPE_T: case PCB_TARGET_T: - case PCB_BITMAP_T: if( !m_filter.graphics ) return false; break; + case PCB_BITMAP_T: + if( !m_filter.graphics || !m_isFootprintEditor ) + return false; + + break; + case PCB_FP_TEXT_T: case PCB_FP_TEXTBOX_T: case PCB_TEXT_T: