GRID_HELPER: Avoid inactive layers when snapping

This commit is contained in:
Seth Hillbrand 2018-10-06 09:31:00 -07:00
parent 776d12c529
commit da3afd4abd
1 changed files with 7 additions and 6 deletions

View File

@ -34,6 +34,7 @@ using namespace std::placeholders;
#include <class_module.h>
#include <class_zone.h>
#include <painter.h>
#include <view/view.h>
#include <view/view_controls.h>
#include <gal/graphics_abstraction_layer.h>
@ -228,18 +229,18 @@ VECTOR2I GRID_HELPER::BestDragOrigin( const VECTOR2I &aMousePos, BOARD_ITEM* aIt
std::set<BOARD_ITEM*> GRID_HELPER::queryVisible( const BOX2I& aArea ) const
{
std::set<BOARD_ITEM*> items;
std::vector<KIGFX::VIEW::LAYER_ITEM_PAIR> selectedItems;
std::vector<KIGFX::VIEW::LAYER_ITEM_PAIR>::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<BOARD_ITEM*>( it->first );
BOARD_ITEM* item = static_cast<BOARD_ITEM*>( it.first );
if( view->IsVisible( item ) )
if( view->IsVisible( item ) && ( !isHighContrast || activeLayers.count( it.second ) ) )
items.insert ( item );
}