diff --git a/pcbnew/tools/pcb_selection_tool.cpp b/pcbnew/tools/pcb_selection_tool.cpp index 9bdd098d27..b5c018f307 100644 --- a/pcbnew/tools/pcb_selection_tool.cpp +++ b/pcbnew/tools/pcb_selection_tool.cpp @@ -2578,10 +2578,7 @@ void PCB_SELECTION_TOOL::unselect( EDA_ITEM* aItem ) void PCB_SELECTION_TOOL::highlight( EDA_ITEM* aItem, int aMode, SELECTION* aGroup ) { if( aGroup ) - { aGroup->Add( aItem ); - view()->Hide( aItem, true ); // Hide the original item, so it is shown only on overlay - } highlightInternal( aItem, aMode, aGroup != nullptr ); view()->Update( aItem, KIGFX::REPAINT ); @@ -2600,6 +2597,9 @@ void PCB_SELECTION_TOOL::highlightInternal( EDA_ITEM* aItem, int aMode, bool aUs else if( aMode == BRIGHTENED ) aItem->SetBrightened(); + if( aUsingOverlay && aMode != BRIGHTENED ) + view()->Hide( aItem, true ); // Hide the original item, so it is shown only on overlay + if( aItem->Type() == PCB_FOOTPRINT_T ) { static_cast( aItem )->RunOnChildren( @@ -2622,10 +2622,7 @@ void PCB_SELECTION_TOOL::highlightInternal( EDA_ITEM* aItem, int aMode, bool aUs void PCB_SELECTION_TOOL::unhighlight( EDA_ITEM* aItem, int aMode, SELECTION* aGroup ) { if( aGroup ) - { aGroup->Remove( aItem ); - view()->Hide( aItem, false ); // // Restore original item visibility - } unhighlightInternal( aItem, aMode, aGroup != nullptr ); view()->Update( aItem, KIGFX::REPAINT ); @@ -2643,6 +2640,9 @@ void PCB_SELECTION_TOOL::unhighlightInternal( EDA_ITEM* aItem, int aMode, bool a else if( aMode == BRIGHTENED ) aItem->ClearBrightened(); + if( aUsingOverlay && aMode != BRIGHTENED ) + view()->Hide( aItem, false ); // // Restore original item visibility + if( aItem->Type() == PCB_FOOTPRINT_T ) { static_cast( aItem )->RunOnChildren(