The last fix to selection rules.
This commit is contained in:
parent
d4e07e981a
commit
b03359a3db
|
@ -210,11 +210,11 @@ void SELECTION_TOOL::selectSingle( const VECTOR2I& aWhere )
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Remove modules, they have to be selected by clicking on area that does not
|
// Remove modules, they have to be selected by clicking on area that does not
|
||||||
// contain anything but module footprint
|
// contain anything but module footprint and not selectable items
|
||||||
for( int i = 0; i < collector.GetCount(); ++i )
|
for( int i = collector.GetCount() - 1; i >= 0 ; --i )
|
||||||
{
|
{
|
||||||
BOARD_ITEM* boardItem = ( collector )[i];
|
BOARD_ITEM* boardItem = ( collector )[i];
|
||||||
if( boardItem->Type() == PCB_MODULE_T )
|
if( boardItem->Type() == PCB_MODULE_T || !selectable( boardItem ) )
|
||||||
collector.Remove( i );
|
collector.Remove( i );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ void SELECTION_TOOL::selectSingle( const VECTOR2I& aWhere )
|
||||||
{
|
{
|
||||||
toggleSelection( collector[0] );
|
toggleSelection( collector[0] );
|
||||||
}
|
}
|
||||||
else
|
else if( collector.GetCount() > 1 )
|
||||||
{
|
{
|
||||||
item = disambiguationMenu( &collector );
|
item = disambiguationMenu( &collector );
|
||||||
if( item )
|
if( item )
|
||||||
|
@ -345,22 +345,14 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
|
|
||||||
int limit = std::min( 10, aCollector->GetCount() );
|
int limit = std::min( 10, aCollector->GetCount() );
|
||||||
|
|
||||||
int addedItems = 0;
|
|
||||||
for( int i = 0; i < limit; ++i )
|
for( int i = 0; i < limit; ++i )
|
||||||
{
|
{
|
||||||
wxString text;
|
wxString text;
|
||||||
BOARD_ITEM* item = ( *aCollector )[i];
|
BOARD_ITEM* item = ( *aCollector )[i];
|
||||||
if( selectable( item ) )
|
text = item->GetSelectMenuText();
|
||||||
{
|
m_menu->Add( text, i );
|
||||||
text = item->GetSelectMenuText();
|
|
||||||
m_menu->Add( text, i );
|
|
||||||
addedItems++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( addedItems == 0 ) // none of items was selectable
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
SetContextMenu( m_menu.get(), CMENU_NOW );
|
SetContextMenu( m_menu.get(), CMENU_NOW );
|
||||||
|
|
||||||
while( OPT_TOOL_EVENT evt = Wait() )
|
while( OPT_TOOL_EVENT evt = Wait() )
|
||||||
|
@ -411,7 +403,6 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
|
|
||||||
bool SELECTION_TOOL::selectable( const BOARD_ITEM* aItem )
|
bool SELECTION_TOOL::selectable( const BOARD_ITEM* aItem )
|
||||||
{
|
{
|
||||||
BOARD* board = getModel<BOARD>( PCB_T );
|
|
||||||
bool highContrast = getView()->GetPainter()->GetSettings()->GetHighContrast();
|
bool highContrast = getView()->GetPainter()->GetSettings()->GetHighContrast();
|
||||||
|
|
||||||
if( highContrast )
|
if( highContrast )
|
||||||
|
@ -437,6 +428,7 @@ bool SELECTION_TOOL::selectable( const BOARD_ITEM* aItem )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOARD* board = getModel<BOARD>( PCB_T );
|
||||||
switch( aItem->Type() )
|
switch( aItem->Type() )
|
||||||
{
|
{
|
||||||
case PCB_VIA_T:
|
case PCB_VIA_T:
|
||||||
|
|
Loading…
Reference in New Issue