Added missing changes required for updating footprints with the module editor.
This commit is contained in:
parent
957f959e90
commit
655721d9ae
|
@ -229,8 +229,6 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent )
|
||||||
// Check if user wants to edit pad or module properties
|
// Check if user wants to edit pad or module properties
|
||||||
if( item->Type() == PCB_MODULE_T )
|
if( item->Type() == PCB_MODULE_T )
|
||||||
{
|
{
|
||||||
item->ClearFlags(); // Necessary for having an undo entry
|
|
||||||
|
|
||||||
for( D_PAD* pad = static_cast<MODULE*>( item )->Pads(); pad; pad = pad->Next() )
|
for( D_PAD* pad = static_cast<MODULE*>( item )->Pads(); pad; pad = pad->Next() )
|
||||||
{
|
{
|
||||||
if( pad->ViewBBox().Contains( getViewControls()->GetCursorPosition() ) )
|
if( pad->ViewBBox().Contains( getViewControls()->GetCursorPosition() ) )
|
||||||
|
@ -244,6 +242,11 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
std::vector<PICKED_ITEMS_LIST*>& undoList = editFrame->GetScreen()->m_UndoList.m_CommandsList;
|
std::vector<PICKED_ITEMS_LIST*>& undoList = editFrame->GetScreen()->m_UndoList.m_CommandsList;
|
||||||
|
|
||||||
|
// Some of properties dialogs alter pointers, so we should deselect them
|
||||||
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
|
STATUS_FLAGS flags = item->GetFlags();
|
||||||
|
item->ClearFlags();
|
||||||
|
|
||||||
// It is necessary to determine if anything has changed
|
// It is necessary to determine if anything has changed
|
||||||
PICKED_ITEMS_LIST* lastChange = undoList.empty() ? NULL : undoList.back();
|
PICKED_ITEMS_LIST* lastChange = undoList.empty() ? NULL : undoList.back();
|
||||||
|
|
||||||
|
@ -254,17 +257,15 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
if( lastChange != currentChange ) // Something has changed
|
if( lastChange != currentChange ) // Something has changed
|
||||||
{
|
{
|
||||||
// Some of properties dialogs alter pointers, so we should deselect them
|
|
||||||
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
|
||||||
|
|
||||||
processChanges( currentChange );
|
processChanges( currentChange );
|
||||||
|
|
||||||
// Seems unnecessary, as the items are removed/added to the board
|
updateRatsnest( true );
|
||||||
// updateRatsnest( true );
|
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
||||||
// getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
|
||||||
|
|
||||||
m_toolMgr->RunAction( COMMON_ACTIONS::pointEditorUpdate );
|
m_toolMgr->RunAction( COMMON_ACTIONS::pointEditorUpdate );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
item->SetFlags( flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
|
@ -554,6 +555,7 @@ void EDIT_TOOL::processChanges( const PICKED_ITEMS_LIST* aList )
|
||||||
getView(), _1 ) );
|
getView(), _1 ) );
|
||||||
|
|
||||||
getView()->Add( updItem );
|
getView()->Add( updItem );
|
||||||
|
updItem->ViewUpdate();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <fctsys.h>
|
#include <fctsys.h>
|
||||||
#include <class_drawpanel.h>
|
#include <class_drawpanel.h>
|
||||||
|
#include <class_draw_panel_gal.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <kicad_string.h>
|
#include <kicad_string.h>
|
||||||
#include <wxPcbStruct.h>
|
#include <wxPcbStruct.h>
|
||||||
|
@ -44,6 +45,8 @@
|
||||||
#include <dialog_exchange_modules_base.h>
|
#include <dialog_exchange_modules_base.h>
|
||||||
#include <wildcards_and_files_ext.h>
|
#include <wildcards_and_files_ext.h>
|
||||||
|
|
||||||
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
static bool RecreateCmpFile( BOARD * aBrd, const wxString& aFullCmpFileName );
|
static bool RecreateCmpFile( BOARD * aBrd, const wxString& aFullCmpFileName );
|
||||||
|
|
||||||
class DIALOG_EXCHANGE_MODULE : public DIALOG_EXCHANGE_MODULE_BASE
|
class DIALOG_EXCHANGE_MODULE : public DIALOG_EXCHANGE_MODULE_BASE
|
||||||
|
@ -470,9 +473,21 @@ void PCB_EDIT_FRAME::Exchange_Module( MODULE* aOldModule,
|
||||||
ITEM_PICKER picker_new( aNewModule, UR_NEW );
|
ITEM_PICKER picker_new( aNewModule, UR_NEW );
|
||||||
aUndoPickList->PushItem( picker_old );
|
aUndoPickList->PushItem( picker_old );
|
||||||
aUndoPickList->PushItem( picker_new );
|
aUndoPickList->PushItem( picker_new );
|
||||||
|
|
||||||
|
if( IsGalCanvasActive() )
|
||||||
|
{
|
||||||
|
KIGFX::VIEW* view = GetGalCanvas()->GetView();
|
||||||
|
|
||||||
|
aOldModule->RunOnChildren( boost::bind( &KIGFX::VIEW::Remove, view, _1 ) );
|
||||||
|
view->Remove( aOldModule );
|
||||||
|
|
||||||
|
aNewModule->RunOnChildren( boost::bind( &KIGFX::VIEW::Add, view, _1 ) );
|
||||||
|
view->Add( aNewModule );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
GetGalCanvas()->GetView()->Remove( aOldModule );
|
||||||
aOldModule->DeleteStructure();
|
aOldModule->DeleteStructure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue