Skip to content

Commit 6cbb9f0

Browse files
committed
Fix labeling-ng with utf-8 layers (ticket #3854)
1 parent b55a00e commit 6cbb9f0

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/core/qgspallabeling.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ int QgsPalLabeling::prepareLayer( QgsVectorLayer* layer, QSet<int>& attrIndices,
726726
max_scale = lyr.scaleMax;
727727
}
728728

729-
Layer* l = mPal->addLayer( layer->id().toLocal8Bit().data(),
729+
Layer* l = mPal->addLayer( layer->id().toUtf8().data(),
730730
min_scale, max_scale, arrangement,
731731
METER, priority, lyr.obstacle, true, true );
732732

@@ -763,7 +763,7 @@ int QgsPalLabeling::prepareLayer( QgsVectorLayer* layer, QSet<int>& attrIndices,
763763

764764
int QgsPalLabeling::addDiagramLayer( QgsVectorLayer* layer, QgsDiagramLayerSettings *s )
765765
{
766-
Layer* l = mPal->addLayer( layer->id().append( "d" ).toLocal8Bit().data(), -1, -1, pal::Arrangement( s->placement ), METER, s->priority, s->obstacle, true, true );
766+
Layer* l = mPal->addLayer( layer->id().append( "d" ).toUtf8().data(), -1, -1, pal::Arrangement( s->placement ), METER, s->priority, s->obstacle, true, true );
767767
l->setArrangementFlags( s->placementFlags );
768768

769769
s->palLayer = l;
@@ -1003,13 +1003,15 @@ void QgsPalLabeling::drawLabeling( QgsRenderContext& context )
10031003
continue;
10041004
}
10051005

1006+
//layer names
1007+
QString layerNameUtf8 = QString::fromUtf8(( *it )->getLayerName() );
10061008
if ( palGeometry->isDiagram() )
10071009
{
10081010
//render diagram
10091011
QHash<QgsVectorLayer*, QgsDiagramLayerSettings>::iterator dit = mActiveDiagramLayers.begin();
10101012
for ( dit = mActiveDiagramLayers.begin(); dit != mActiveDiagramLayers.end(); ++dit )
10111013
{
1012-
if ( dit.key() && dit.key()->id().append( "d" ) == ( *it )->getLayerName() )
1014+
if ( dit.key() && dit.key()->id().append( "d" ) == layerNameUtf8 )
10131015
{
10141016
QgsPoint outPt = xform->transform(( *it )->getX(), ( *it )->getY() );
10151017
dit.value().renderer->renderDiagram( palGeometry->diagramAttributes(), context, QPointF( outPt.x(), outPt.y() ) );
@@ -1020,14 +1022,14 @@ void QgsPalLabeling::drawLabeling( QgsRenderContext& context )
10201022
if ( mLabelSearchTree )
10211023
{
10221024
//for diagrams, remove the additional 'd' at the end of the layer id
1023-
QString layerId = ( *it )->getLayerName();
1025+
QString layerId = layerNameUtf8;
10241026
layerId.chop( 1 );
10251027
mLabelSearchTree->insertLabel( *it, QString( palGeometry->strId() ).toInt(), layerId, true );
10261028
}
10271029
continue;
10281030
}
10291031

1030-
const QgsPalLayerSettings& lyr = layer(( *it )->getLayerName() );
1032+
const QgsPalLayerSettings& lyr = layer( layerNameUtf8 );
10311033
QFont fontForLabel = lyr.textFont;
10321034
QColor fontColor = lyr.textColor;
10331035
double bufferSize = lyr.bufferSize;
@@ -1206,7 +1208,7 @@ void QgsPalLabeling::drawLabel( pal::LabelPosition* label, QPainter* painter, co
12061208
QgsPoint outPt = xform->transform( label->getX(), label->getY() );
12071209

12081210
// TODO: optimize access :)
1209-
const QgsPalLayerSettings& lyr = layer( label->getLayerName() );
1211+
const QgsPalLayerSettings& lyr = layer( QString::fromUtf8( label->getLayerName() ) );
12101212

12111213
QString text = (( QgsPalGeometry* )label->getFeaturePart()->getUserGeometry() )->text();
12121214
QString txt = ( label->getPartId() == -1 ? text : QString( text[label->getPartId()] ) );

0 commit comments

Comments
 (0)