From 35c7ba0a8ae8edc06a4e03e2ab6d369201e641bf Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Wed, 21 Oct 2020 20:32:56 -0400 Subject: [PATCH] Fix hover/highlight of line edit points Fixes https://gitlab.com/kicad/code/kicad/-/issues/6104 --- common/tool/edit_points.cpp | 42 +++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/common/tool/edit_points.cpp b/common/tool/edit_points.cpp index d78535abda..cfce4766e9 100644 --- a/common/tool/edit_points.cpp +++ b/common/tool/edit_points.cpp @@ -261,27 +261,33 @@ void EDIT_POINTS::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const double borderSize = aView->ToWorld( EDIT_POINT::BORDER_SIZE ); double hoverSize = aView->ToWorld( EDIT_POINT::HOVER_SIZE ); - for( const EDIT_POINT& point : m_points ) - { - if( point.IsHover() || point.IsActive() ) - { - gal->SetStrokeColor( highlightColor ); - gal->SetLineWidth( hoverSize ); - } - else - { - gal->SetStrokeColor( bgColor ); - gal->SetLineWidth( borderSize ); - } + auto drawPoint = + [&]( const EDIT_POINT& aPoint, bool aDrawCircle = false ) + { + if( aPoint.IsHover() || aPoint.IsActive() ) + { + gal->SetStrokeColor( highlightColor ); + gal->SetLineWidth( hoverSize ); + } + else + { + gal->SetStrokeColor( bgColor ); + gal->SetLineWidth( borderSize ); + } - gal->SetFillColor( point.IsActive() ? highlightColor : drawColor ); - gal->DrawRectangle( point.GetPosition() - size, point.GetPosition() + size ); - } + gal->SetFillColor( aPoint.IsActive() ? highlightColor : drawColor ); + + 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 ) - { - gal->DrawCircle( line.GetPosition(), size ); - } + drawPoint( line, true ); gal->PopDepth(); }