From de0e8bd51925b00cff39b39051ea2dfa5bd9eca0 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Mon, 24 Feb 2014 12:56:47 +0100 Subject: [PATCH] Fixed a missing group clearing and update for restored VIEW_ITEMs.Fixed a missing group clearing and update for restored VIEW_ITEMs. --- common/view/view.cpp | 18 +++++++++--------- pcbnew/pcb_painter.cpp | 6 +----- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/common/view/view.cpp b/common/view/view.cpp index 0a18d42711..38051b094e 100644 --- a/common/view/view.cpp +++ b/common/view/view.cpp @@ -94,13 +94,16 @@ void VIEW::Add( VIEW_ITEM* aItem ) aItem->ViewGetLayers( layers, layers_count ); aItem->saveLayers( layers, layers_count ); - for( int i = 0; i < layers_count; i++ ) + for( int i = 0; i < layers_count; ++i ) { VIEW_LAYER& l = m_layers[layers[i]]; l.items->Insert( aItem ); MarkTargetDirty( l.target ); } + if( aItem->viewRequiredUpdate() != VIEW_ITEM::NONE ) + MarkForUpdate( aItem ); + if( m_dynamic ) aItem->viewAssign( this ); } @@ -122,8 +125,12 @@ void VIEW::Remove( VIEW_ITEM* aItem ) // Clear the GAL cache int prevGroup = aItem->getGroup( layers[i] ); + if( prevGroup >= 0 ) + { m_gal->DeleteGroup( prevGroup ); + aItem->setGroup( layers[i], -1 ); + } } } @@ -134,13 +141,9 @@ void VIEW::SetRequired( int aLayerId, int aRequiredId, bool aRequired ) wxASSERT( (unsigned) aRequiredId < m_layers.size() ); if( aRequired ) - { m_layers[aLayerId].requiredLayers.insert( aRequiredId ); - } else - { m_layers[aLayerId].requiredLayers.erase( aRequired ); - } } @@ -782,10 +785,7 @@ struct VIEW::clearLayerCache bool operator()( VIEW_ITEM* aItem ) { - if( aItem->storesGroups() ) - { - aItem->deleteGroups(); - } + aItem->deleteGroups(); return true; } diff --git a/pcbnew/pcb_painter.cpp b/pcbnew/pcb_painter.cpp index 93414fc3e0..72fd6dd0c3 100644 --- a/pcbnew/pcb_painter.cpp +++ b/pcbnew/pcb_painter.cpp @@ -275,10 +275,6 @@ void PCB_PAINTER::draw( const TRACK* aTrack, int aLayer ) if( length < 10 * width ) return; - NETINFO_ITEM* net = ( (BOARD*) aTrack->GetParent() )->FindNet( netNumber ); - if( !net ) - return; - const wxString& netName = aTrack->GetShortNetname(); VECTOR2D textPosition = start + line / 2.0; // center of the track double textOrientation = -atan( line.y / line.x ); @@ -303,7 +299,7 @@ void PCB_PAINTER::draw( const TRACK* aTrack, int aLayer ) m_gal->StrokeText( netName, textPosition, textOrientation ); } } - else if( IsCopperLayer( aLayer )) + else if( IsCopperLayer( aLayer ) ) { // Draw a regular track const COLOR4D& color = m_pcbSettings->GetColor( aTrack, aLayer );