diff --git a/pcbnew/tools/grid_helper.cpp b/pcbnew/tools/grid_helper.cpp index c7a8324e44..7ce3002a6e 100644 --- a/pcbnew/tools/grid_helper.cpp +++ b/pcbnew/tools/grid_helper.cpp @@ -34,6 +34,7 @@ using namespace std::placeholders; #include #include +#include #include #include #include @@ -228,18 +229,18 @@ VECTOR2I GRID_HELPER::BestDragOrigin( const VECTOR2I &aMousePos, BOARD_ITEM* aIt std::set GRID_HELPER::queryVisible( const BOX2I& aArea ) const { std::set items; - std::vector selectedItems; - std::vector::iterator it, it_end; auto view = m_frame->GetGalCanvas()->GetView(); - view->Query( aArea, selectedItems ); // Get the list of selected items + auto activeLayers = view->GetPainter()->GetSettings()->GetActiveLayers(); + bool isHighContrast = view->GetPainter()->GetSettings()->GetHighContrast(); + view->Query( aArea, selectedItems ); - for( it = selectedItems.begin(), it_end = selectedItems.end(); it != it_end; ++it ) + for( auto it : selectedItems ) { - BOARD_ITEM* item = static_cast( it->first ); + BOARD_ITEM* item = static_cast( it.first ); - if( view->IsVisible( item ) ) + if( view->IsVisible( item ) && ( !isHighContrast || activeLayers.count( it.second ) ) ) items.insert ( item ); }