Use VIEW_GROUP for candidate highlighting; enable in PcbNew also
This commit is contained in:
parent
05a120f09f
commit
256f52f27e
|
@ -765,17 +765,10 @@ void GERBER_DRAW_ITEM::Show( int nestLevel, std::ostream& os ) const
|
||||||
|
|
||||||
void GERBER_DRAW_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
|
void GERBER_DRAW_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
|
||||||
{
|
{
|
||||||
aCount = IsBrightened() ? 1 : 2;
|
aCount = 2;
|
||||||
|
|
||||||
if( IsBrightened() )
|
aLayers[0] = GERBER_DRAW_LAYER( GetLayer() );
|
||||||
{
|
aLayers[1] = GERBER_DCODE_LAYER( aLayers[0] );
|
||||||
aLayers[0] = LAYER_GP_OVERLAY;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aLayers[0] = GERBER_DRAW_LAYER( GetLayer() );
|
|
||||||
aLayers[1] = GERBER_DCODE_LAYER( aLayers[0] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -633,9 +633,12 @@ void GERBVIEW_SELECTION_TOOL::zoomFitSelection( void )
|
||||||
EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollector )
|
EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollector )
|
||||||
{
|
{
|
||||||
EDA_ITEM* current = NULL;
|
EDA_ITEM* current = NULL;
|
||||||
BRIGHT_BOX brightBox;
|
KIGFX::VIEW_GROUP highlightGroup;
|
||||||
CONTEXT_MENU menu;
|
CONTEXT_MENU menu;
|
||||||
|
|
||||||
|
highlightGroup.SetLayer( LAYER_GP_OVERLAY );
|
||||||
|
getView()->Add( &highlightGroup );
|
||||||
|
|
||||||
int limit = std::min( 10, aCollector->GetCount() );
|
int limit = std::min( 10, aCollector->GetCount() );
|
||||||
|
|
||||||
for( int i = 0; i < limit; ++i )
|
for( int i = 0; i < limit; ++i )
|
||||||
|
@ -657,7 +660,8 @@ EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollec
|
||||||
if( current )
|
if( current )
|
||||||
{
|
{
|
||||||
current->ClearBrightened();
|
current->ClearBrightened();
|
||||||
getView()->Update( current, KIGFX::LAYERS );
|
getView()->Hide( current, false );
|
||||||
|
highlightGroup.Remove( current );
|
||||||
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,7 +672,8 @@ EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollec
|
||||||
{
|
{
|
||||||
current = ( *aCollector )[id - 1];
|
current = ( *aCollector )[id - 1];
|
||||||
current->SetBrightened();
|
current->SetBrightened();
|
||||||
getView()->Update( current, KIGFX::LAYERS );
|
getView()->Hide( current, true );
|
||||||
|
highlightGroup.Add( current );
|
||||||
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -693,10 +698,13 @@ EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollec
|
||||||
if( current && current->IsBrightened() )
|
if( current && current->IsBrightened() )
|
||||||
{
|
{
|
||||||
current->ClearBrightened();
|
current->ClearBrightened();
|
||||||
getView()->Update( current, KIGFX::LAYERS );
|
getView()->Hide( current, false );
|
||||||
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getView()->Remove( &highlightGroup );
|
||||||
|
|
||||||
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ PCB_RENDER_SETTINGS::PCB_RENDER_SETTINGS()
|
||||||
m_clearance = CL_NONE;
|
m_clearance = CL_NONE;
|
||||||
m_sketchBoardGfx = false;
|
m_sketchBoardGfx = false;
|
||||||
m_sketchFpGfx = false;
|
m_sketchFpGfx = false;
|
||||||
|
m_selectionCandidateColor = COLOR4D( 0.0, 1.0, 0.0, 0.75 );
|
||||||
|
|
||||||
// By default everything should be displayed as filled
|
// By default everything should be displayed as filled
|
||||||
for( unsigned int i = 0; i < PCB_LAYER_ID_COUNT; ++i )
|
for( unsigned int i = 0; i < PCB_LAYER_ID_COUNT; ++i )
|
||||||
|
@ -210,6 +211,12 @@ const COLOR4D& PCB_RENDER_SETTINGS::GetColor( const VIEW_ITEM* aItem, int aLayer
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
// Selection disambiguation
|
||||||
|
if( item->IsBrightened() )
|
||||||
|
{
|
||||||
|
return m_selectionCandidateColor;
|
||||||
|
}
|
||||||
|
|
||||||
if( item->IsSelected() )
|
if( item->IsSelected() )
|
||||||
{
|
{
|
||||||
return m_layerColorsSel[aLayer];
|
return m_layerColorsSel[aLayer];
|
||||||
|
|
|
@ -163,6 +163,9 @@ protected:
|
||||||
|
|
||||||
///> Clearance visibility settings
|
///> Clearance visibility settings
|
||||||
int m_clearance;
|
int m_clearance;
|
||||||
|
|
||||||
|
///> Color used for highlighting selection candidates
|
||||||
|
COLOR4D m_selectionCandidateColor;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1268,10 +1268,11 @@ void SELECTION_TOOL::clearSelection()
|
||||||
BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
{
|
{
|
||||||
BOARD_ITEM* current = NULL;
|
BOARD_ITEM* current = NULL;
|
||||||
PCB_BRIGHT_BOX brightBox;
|
KIGFX::VIEW_GROUP highlightGroup;
|
||||||
CONTEXT_MENU menu;
|
CONTEXT_MENU menu;
|
||||||
|
|
||||||
getView()->Add( &brightBox );
|
highlightGroup.SetLayer( LAYER_GP_OVERLAY );
|
||||||
|
getView()->Add( &highlightGroup );
|
||||||
|
|
||||||
int limit = std::min( 9, aCollector->GetCount() );
|
int limit = std::min( 9, aCollector->GetCount() );
|
||||||
|
|
||||||
|
@ -1294,7 +1295,12 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
if( evt->Action() == TA_CONTEXT_MENU_UPDATE )
|
if( evt->Action() == TA_CONTEXT_MENU_UPDATE )
|
||||||
{
|
{
|
||||||
if( current )
|
if( current )
|
||||||
|
{
|
||||||
current->ClearBrightened();
|
current->ClearBrightened();
|
||||||
|
getView()->Hide( current, false );
|
||||||
|
highlightGroup.Remove( current );
|
||||||
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
|
}
|
||||||
|
|
||||||
int id = *evt->GetCommandId();
|
int id = *evt->GetCommandId();
|
||||||
|
|
||||||
|
@ -1303,6 +1309,9 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
{
|
{
|
||||||
current = ( *aCollector )[id - 1];
|
current = ( *aCollector )[id - 1];
|
||||||
current->SetBrightened();
|
current->SetBrightened();
|
||||||
|
getView()->Hide( current, true );
|
||||||
|
highlightGroup.Add( current );
|
||||||
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1321,19 +1330,16 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw a mark to show which item is available to be selected
|
|
||||||
if( current && current->IsBrightened() )
|
|
||||||
{
|
|
||||||
brightBox.SetItem( current );
|
|
||||||
getView()->SetVisible( &brightBox, true );
|
|
||||||
// getView()->Hide( &brightBox, false );
|
|
||||||
getView()->Update( &brightBox, KIGFX::GEOMETRY );
|
|
||||||
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getView()->Remove( &brightBox );
|
if( current && current->IsBrightened() )
|
||||||
|
{
|
||||||
|
current->ClearBrightened();
|
||||||
|
getView()->Hide( current, false );
|
||||||
|
getView()->MarkTargetDirty( KIGFX::TARGET_OVERLAY );
|
||||||
|
}
|
||||||
|
|
||||||
|
getView()->Remove( &highlightGroup );
|
||||||
|
|
||||||
|
|
||||||
return current;
|
return current;
|
||||||
|
|
Loading…
Reference in New Issue