Eeschema: Draw selected global labels:fix incorrect text drawing.

Happens only on Cairo.
Was due to the fact on cairo the shape area was deleted  after the shadow
text was drawn, and only the second text was seen.

Fixes #3745
https://gitlab.com/kicad/code/kicad/issues/3745
This commit is contained in:
jean-pierre charras 2020-01-09 14:43:46 +01:00
parent 03611f7bb7
commit 3f161965cd
1 changed files with 9 additions and 1 deletions

View File

@ -1464,7 +1464,15 @@ void SCH_PAINTER::draw( SCH_GLOBALLABEL *aLabel, int aLayer )
for( auto p : pts )
pts2.emplace_back( VECTOR2D( p.x, p.y ) );
m_gal->SetIsFill( true );
// the text is drawn inside the graphic shape.
// On Cairo the graphic shape is filled by the background
// before drawing the text ().
// However if the text is selected, it is draw twice:
// first, on LAYER_SELECTION_SHADOWS
// second, on the text layer.
// the second must not erase the first drawing.
bool fillBg = ( aLayer == LAYER_SELECTION_SHADOWS ) || !aLabel->IsSelected();
m_gal->SetIsFill( fillBg );
m_gal->SetFillColor( m_schSettings.GetLayerColor( LAYER_SCHEMATIC_BACKGROUND ) );
m_gal->SetIsStroke( true );
m_gal->SetLineWidth( getTextThickness( aLabel, drawingShadows ) );