Multiple items selection tool.
This commit is contained in:
parent
80901c69cf
commit
2cb6e59dfd
|
@ -197,6 +197,7 @@ void SELECTION_TOOL::selectMultiple()
|
||||||
|
|
||||||
if( evt->IsDrag( MB_Left ) )
|
if( evt->IsDrag( MB_Left ) )
|
||||||
{
|
{
|
||||||
|
// Start drawing a selection box
|
||||||
m_selArea->SetOrigin( evt->DragOrigin() );
|
m_selArea->SetOrigin( evt->DragOrigin() );
|
||||||
m_selArea->SetEnd( evt->Position() );
|
m_selArea->SetEnd( evt->Position() );
|
||||||
m_selArea->ViewSetVisible( true );
|
m_selArea->ViewSetVisible( true );
|
||||||
|
@ -205,7 +206,27 @@ void SELECTION_TOOL::selectMultiple()
|
||||||
|
|
||||||
if( evt->IsMouseUp( MB_Left ) )
|
if( evt->IsMouseUp( MB_Left ) )
|
||||||
{
|
{
|
||||||
|
// End drawing a selection box
|
||||||
m_selArea->ViewSetVisible( false );
|
m_selArea->ViewSetVisible( false );
|
||||||
|
|
||||||
|
// Mark items within a box as selected
|
||||||
|
std::vector<VIEW::LayerItemPair> selectedItems;
|
||||||
|
BOX2I selectionBox = m_selArea->ViewBBox();
|
||||||
|
|
||||||
|
v->Query( selectionBox, selectedItems );
|
||||||
|
std::vector<VIEW::LayerItemPair>::iterator it, it_end;
|
||||||
|
for( it = selectedItems.begin(), it_end = selectedItems.end(); it != it_end; ++it )
|
||||||
|
{
|
||||||
|
BOARD_ITEM* item = static_cast<BOARD_ITEM*>( it->first );
|
||||||
|
|
||||||
|
// Add only those items which are fully within a selection box
|
||||||
|
if( selectionBox.Contains( item->ViewBBox() ) )
|
||||||
|
{
|
||||||
|
item->SetSelected();
|
||||||
|
m_selectedItems.insert( item );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue