diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 11f1c34200..9729d0ed3f 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -1365,6 +1365,7 @@ void WinEDA_PcbFrame::SwitchLayer(wxDC *DC, int layer) Other_Layer_Route( (TRACK *) GetScreen()->m_CurrentItem, DC); } } + GetScreen()->m_Active_Layer = layer; if ( DisplayOpt.ContrastModeDisplay ) diff --git a/pcbnew/hotkeys.cpp b/pcbnew/hotkeys.cpp index c66d52ae41..d3450f45cb 100644 --- a/pcbnew/hotkeys.cpp +++ b/pcbnew/hotkeys.cpp @@ -46,7 +46,7 @@ MODULE* module = NULL; case WXK_NUMPAD_DELETE: OnHotkeyDeleteItem(DC, DrawStruct); break; - case WXK_BACK:{ + case WXK_BACK:{ if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N ){ bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || @@ -54,7 +54,9 @@ MODULE* module = NULL; if ( ItemFree ){ //no track is currently being edited - select a segment and remove it. DrawStruct = PcbGeneralLocateAndDisplay(); - if ( DrawStruct ) + //don't let backspace delete modules!! + if ( DrawStruct && (DrawStruct->m_StructType == TYPETRACK + || DrawStruct->m_StructType == TYPEVIA)) Delete_Segment(DC, (TRACK*)DrawStruct); GetScreen()->SetModify(); } @@ -217,6 +219,7 @@ bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || { MODULE * module = Locate_Prefered_Module(m_Pcb, CURSEUR_ON_GRILLE); if ( module == NULL ) return FALSE; + if( ! IsOK(this, _("Delete module?")) ) return FALSE; RemoveStruct(module, DC); } else return FALSE;