Fix hover/highlight of line edit points

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6104
This commit is contained in:
Jon Evans 2020-10-21 20:32:56 -04:00
parent 3f48aca721
commit 35c7ba0a8a
1 changed files with 24 additions and 18 deletions

View File

@ -261,9 +261,10 @@ void EDIT_POINTS::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
double borderSize = aView->ToWorld( EDIT_POINT::BORDER_SIZE ); double borderSize = aView->ToWorld( EDIT_POINT::BORDER_SIZE );
double hoverSize = aView->ToWorld( EDIT_POINT::HOVER_SIZE ); double hoverSize = aView->ToWorld( EDIT_POINT::HOVER_SIZE );
for( const EDIT_POINT& point : m_points ) auto drawPoint =
[&]( const EDIT_POINT& aPoint, bool aDrawCircle = false )
{ {
if( point.IsHover() || point.IsActive() ) if( aPoint.IsHover() || aPoint.IsActive() )
{ {
gal->SetStrokeColor( highlightColor ); gal->SetStrokeColor( highlightColor );
gal->SetLineWidth( hoverSize ); gal->SetLineWidth( hoverSize );
@ -274,14 +275,19 @@ void EDIT_POINTS::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
gal->SetLineWidth( borderSize ); gal->SetLineWidth( borderSize );
} }
gal->SetFillColor( point.IsActive() ? highlightColor : drawColor ); gal->SetFillColor( aPoint.IsActive() ? highlightColor : drawColor );
gal->DrawRectangle( point.GetPosition() - size, point.GetPosition() + size );
} if( aDrawCircle )
gal->DrawCircle( aPoint.GetPosition(), size );
else
gal->DrawRectangle( aPoint.GetPosition() - size, aPoint.GetPosition() + size );
};
for( const EDIT_POINT& point : m_points )
drawPoint( point );
for( const EDIT_LINE& line : m_lines ) for( const EDIT_LINE& line : m_lines )
{ drawPoint( line, true );
gal->DrawCircle( line.GetPosition(), size );
}
gal->PopDepth(); gal->PopDepth();
} }