diff --git a/eeschema/class_drawsheet.cpp b/eeschema/class_drawsheet.cpp index b332ba362d..e5d3b7f8b5 100644 --- a/eeschema/class_drawsheet.cpp +++ b/eeschema/class_drawsheet.cpp @@ -239,9 +239,11 @@ void SCH_SHEET::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) * @param aFrame = the schematic frame */ void SCH_SHEET::CleanupSheet( WinEDA_SchematicFrame* aFrame, - bool aRedraw ) + bool aRedraw, + bool aSaveForUndoRedo) { SCH_SHEET_PIN* Pinsheet, * NextPinsheet; + bool isSaved = false; if( !IsOK( aFrame, _( "Ok to cleanup this sheet" ) ) ) return; @@ -268,6 +270,11 @@ void SCH_SHEET::CleanupSheet( WinEDA_SchematicFrame* aFrame, NextPinsheet = Pinsheet->Next(); if( HLabel == NULL ) // Hlabel not found: delete pinsheet { + if( aSaveForUndoRedo && !isSaved ) + { + isSaved = true; + aFrame->SaveCopyInUndoList( this, UR_CHANGED); + } aFrame->OnModify( ); aFrame->DeleteSheetLabel( false, Pinsheet ); } diff --git a/eeschema/class_drawsheet.h b/eeschema/class_drawsheet.h index 654951d129..fe0c8a4018 100644 --- a/eeschema/class_drawsheet.h +++ b/eeschema/class_drawsheet.h @@ -178,10 +178,12 @@ public: /** Function CleanupSheet * Delete pinsheets which are not corresponding to a hierarchical label - * @param aRedraw = true to redraw Sheet * @param aFrame = the schematic frame + * @param aRedraw = true to redraw Sheet + * @param aSaveForUndoRedo = true to put this sheet in UndoRedo list, + * if it is modified. */ - void CleanupSheet( WinEDA_SchematicFrame* frame, bool aRedraw ); + void CleanupSheet( WinEDA_SchematicFrame* frame, bool aRedraw, bool aSaveForUndoRedo ); /** Function GetPenSize * @return the size of the "pen" that be used to draw or plot this item diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index e2767e4946..52b4b61374 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -383,7 +383,7 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_SCH_CLEANUP_SHEET: if ( screen->GetCurItem() && screen->GetCurItem()->Type() == DRAW_SHEET_STRUCT_TYPE ) - ( (SCH_SHEET*) screen->GetCurItem() )->CleanupSheet( this, true ); + ( (SCH_SHEET*) screen->GetCurItem() )->CleanupSheet( this, true, true ); break; case ID_POPUP_SCH_EDIT_PINSHEET: diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index a7052ce562..92b2fbc836 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -288,7 +288,6 @@ void WinEDA_ModuleEditFrame::SetToolbars() m_HToolBar->EnableTool( ID_MODEDIT_SAVE_LIBMODULE, active && islib ); MODULE* module_in_edit = GetBoard()->m_Modules; if( module_in_edit && module_in_edit->m_Link ) // this is not a new module - // ... { BOARD* mainpcb = frame->GetBoard(); MODULE* source_module = mainpcb->m_Modules; @@ -334,7 +333,7 @@ void WinEDA_ModuleEditFrame::SetToolbars() { m_HToolBar->EnableTool( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, false ); } - + m_HToolBar->Refresh(); if( m_VToolBar ) { @@ -345,6 +344,7 @@ void WinEDA_ModuleEditFrame::SetToolbars() m_VToolBar->EnableTool( ID_PCB_ADD_TEXT_BUTT, active ); m_VToolBar->EnableTool( ID_MODEDIT_PLACE_ANCHOR, active ); m_VToolBar->EnableTool( ID_PCB_DELETE_ITEM_BUTT, active ); + m_VToolBar->Refresh(); } if( m_OptionsToolBar ) @@ -382,7 +382,8 @@ void WinEDA_ModuleEditFrame::SetToolbars() m_DisplayPadFill ? _( "Show pads in sketch mode" ) : _( "Show pads in filled mode" ) ); - } + m_OptionsToolBar->Refresh(); + } if( m_AuxiliaryToolBar ) { @@ -406,6 +407,8 @@ void WinEDA_ModuleEditFrame::SetToolbars() if( m_SelGridBox ) m_SelGridBox->SetSelection( m_LastGridSizeId ); + + m_AuxiliaryToolBar->Refresh(); } DisplayUnitsMsg(); diff --git a/pcbnew/toolbars_update_user_interface.cpp b/pcbnew/toolbars_update_user_interface.cpp index 25c5161b67..ac71966b3f 100644 --- a/pcbnew/toolbars_update_user_interface.cpp +++ b/pcbnew/toolbars_update_user_interface.cpp @@ -141,6 +141,9 @@ void WinEDA_PcbFrame::AuxiliaryToolBar_Update_UI() m_SelGridBox->SetSelection( m_LastGridSizeId ); m_TrackAndViasSizesList_Changed = false; + + m_AuxiliaryToolBar->Refresh(); + } @@ -181,6 +184,7 @@ void WinEDA_PcbFrame::SetToolbars() state = GetScreen()->GetRedoCommandCount() > 0; m_HToolBar->EnableTool( wxID_REDO, state ); + m_HToolBar->Refresh(); if( m_OptionsToolBar ) { @@ -267,6 +271,7 @@ void WinEDA_PcbFrame::SetToolbars() m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1, m_auimgr.GetPane(wxT("m_AuxVToolBar")).IsShown() ); + m_OptionsToolBar->Refresh(); } if( m_AuxiliaryToolBar )