Make sure zone fills are up-to-date before deleting unconnected things.
Fixes https://gitlab.com/kicad/code/kicad/issues/5253
This commit is contained in:
parent
842641308f
commit
c324c2cbf6
|
@ -44,6 +44,7 @@ wxString CLEANUP_ITEM::GetErrorText( int aCode, bool aTranslate ) const
|
|||
switch( aCode )
|
||||
{
|
||||
// For cleanup tracks and vias:
|
||||
case CLEANUP_CHECKING_ZONE_FILLS: msg = _HKI( "Checking zone fills..." ); break;
|
||||
case CLEANUP_SHORTING_TRACK: msg = _HKI( "Remove track shorting two nets" ); break;
|
||||
case CLEANUP_SHORTING_VIA: msg = _HKI( "Remove via shorting two nets" ); break;
|
||||
case CLEANUP_REDUNDANT_VIA: msg = _HKI( "Remove redundant via" ); break;
|
||||
|
|
|
@ -32,7 +32,8 @@ class PCB_BASE_FRAME;
|
|||
|
||||
enum CLEANUP_RC_CODE {
|
||||
CLEANUP_FIRST = DRCE_LAST + 1,
|
||||
CLEANUP_SHORTING_TRACK = CLEANUP_FIRST,
|
||||
CLEANUP_CHECKING_ZONE_FILLS = CLEANUP_FIRST,
|
||||
CLEANUP_SHORTING_TRACK,
|
||||
CLEANUP_SHORTING_VIA,
|
||||
CLEANUP_REDUNDANT_VIA,
|
||||
CLEANUP_DUPLICATE_TRACK,
|
||||
|
@ -48,6 +49,9 @@ enum CLEANUP_RC_CODE {
|
|||
|
||||
class CLEANUP_ITEM : public RC_ITEM
|
||||
{
|
||||
private:
|
||||
wxString m_errorMessage;
|
||||
|
||||
public:
|
||||
CLEANUP_ITEM( int aErrorCode );
|
||||
|
||||
|
@ -56,13 +60,6 @@ public:
|
|||
* returns the string form of a drc error code.
|
||||
*/
|
||||
wxString GetErrorText( int aErrorCode = -1, bool aTranslate = true ) const;
|
||||
|
||||
/**
|
||||
* Function ShowHtml
|
||||
* translates this object into a fragment of HTML suitable for the wxHtmlListBox class.
|
||||
* @return wxString - the html text.
|
||||
*/
|
||||
wxString ShowHtml( PCB_BASE_FRAME* aFrame ) const;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -30,10 +30,12 @@
|
|||
#include <tracks_cleaner.h>
|
||||
#include <drc/drc_item.h>
|
||||
#include <drc/drc_provider.h>
|
||||
#include <tools/zone_filler_tool.h>
|
||||
|
||||
DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS( PCB_EDIT_FRAME* aParentFrame ) :
|
||||
DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE( aParentFrame ),
|
||||
m_parentFrame( aParentFrame )
|
||||
m_parentFrame( aParentFrame ),
|
||||
m_firstRun( true )
|
||||
{
|
||||
auto cfg = m_parentFrame->GetPcbNewSettings();
|
||||
|
||||
|
@ -114,6 +116,18 @@ void DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup( bool aDryRun )
|
|||
|
||||
m_items.clear();
|
||||
|
||||
if( m_firstRun )
|
||||
{
|
||||
m_items.push_back( std::make_shared<CLEANUP_ITEM>( CLEANUP_CHECKING_ZONE_FILLS ) );
|
||||
RC_ITEMS_PROVIDER* provider = new VECTOR_CLEANUP_ITEMS_PROVIDER( &m_items );
|
||||
m_changesTreeModel->SetProvider( provider );
|
||||
|
||||
m_parentFrame->GetToolManager()->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( this );
|
||||
|
||||
m_changesTreeModel->SetProvider( nullptr );
|
||||
m_items.clear();
|
||||
}
|
||||
|
||||
// Old model has to be refreshed, GAL normally does not keep updating it
|
||||
m_parentFrame->Compile_Ratsnest( false );
|
||||
|
||||
|
|
|
@ -35,8 +35,10 @@ class PCB_EDIT_FRAME;
|
|||
class DIALOG_CLEANUP_TRACKS_AND_VIAS: public DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE
|
||||
{
|
||||
PCB_EDIT_FRAME* m_parentFrame;
|
||||
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
|
||||
RC_TREE_MODEL* m_changesTreeModel;
|
||||
bool m_firstRun;
|
||||
|
||||
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
|
||||
|
||||
void doCleanup( bool aDryRun );
|
||||
|
||||
|
|
Loading…
Reference in New Issue