Skip to content
Permalink
Browse files

[legend] insure multi-line labels are vertically centered with tall s…

…ymbols

(cherry-picked from 4558742)
  • Loading branch information
nirvn authored and nyalldawson committed Oct 19, 2016
1 parent a3e22f6 commit 6d92ed4577864e8f1373bff45467ae020203e5f8
@@ -109,9 +109,9 @@ QSizeF QgsLayerTreeModelLegendNode::drawSymbolText( const QgsLegendSettings& set

// Vertical alignment of label with symbol
if ( labelSize.height() < symbolSize.height() )
labelY += symbolSize.height() / 2 + textHeight / 2; // label centered with symbol
else
labelY += textHeight; // label starts at top and runs under symbol
labelY += symbolSize.height() / 2 - labelSize.height() / 2; // label centered with symbol

labelY += textHeight;
}

for ( QStringList::Iterator itemPart = lines.begin(); itemPart != lines.end(); ++itemPart )
@@ -115,6 +115,7 @@ class TestQgsLegendRenderer : public QObject
void testBasic();
void testBigMarker();
void testMapUnits();
void testTallSymbol();
void testLongSymbolText();
void testThreeColumns();
void testFilterByMap();
@@ -336,6 +337,28 @@ void TestQgsLegendRenderer::testMapUnits()
QVERIFY( _verifyImage( testName, mReport ) );
}

void TestQgsLegendRenderer::testTallSymbol()
{
QString testName = "legend_tall_symbol";

QgsCategorizedSymbolRenderer* catRenderer = dynamic_cast<QgsCategorizedSymbolRenderer*>( mVL3->renderer() );
QVERIFY( catRenderer );
catRenderer->updateCategoryLabel( 1, "This is\nthree lines\nlong label" );

mVL2->setName( "This is a two lines\nlong label" );

QgsLayerTreeModel legendModel( mRoot );

QgsLegendSettings settings;
settings.setWrapChar( "\n" );
settings.setSymbolSize( QSizeF( 10.0, 10.0 ) );
_setStandardTestFont( settings );
_renderLegend( testName, &legendModel, settings );
QVERIFY( _verifyImage( testName, mReport ) );

mVL2->setName( "Polygon Layer" );
}

void TestQgsLegendRenderer::testLongSymbolText()
{
QString testName = "legend_long_symbol_text";
Binary file not shown.
Binary file not shown.

0 comments on commit 6d92ed4

Please sign in to comment.
You can’t perform that action at this time.