diff --git a/src/core/composer/qgscomposerlabel.cpp b/src/core/composer/qgscomposerlabel.cpp index 80913d10f53..8f3858bb776 100644 --- a/src/core/composer/qgscomposerlabel.cpp +++ b/src/core/composer/qgscomposerlabel.cpp @@ -48,7 +48,13 @@ void QgsComposerLabel::paint( QPainter* painter, const QStyleOptionGraphicsItem* painter->setFont( mFont ); QFontMetricsF fontSize( mFont ); - painter->drawText( QPointF( mMargin, mMargin + fontSize.ascent() ), mText ); + + //support multiline labels + double penWidth = pen().widthF(); + QRectF painterRect(penWidth, penWidth, rect().width() - 2 * penWidth, \ + rect().height() - 2 * penWidth); + painter->drawText(painterRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, mText); + drawFrame( painter ); if ( isSelected() ) @@ -60,7 +66,6 @@ void QgsComposerLabel::paint( QPainter* painter, const QStyleOptionGraphicsItem* void QgsComposerLabel::setText( const QString& text ) { mText = text; - adjustSizeToText(); } void QgsComposerLabel::setFont( const QFont& f ) @@ -76,13 +81,12 @@ void QgsComposerLabel::setFont( const QFont& f ) { mFont = f; } - adjustSizeToText(); } void QgsComposerLabel::adjustSizeToText() { QFontMetricsF fontInfo( mFont ); - setSceneRect( QRectF( transform().dx(), transform().dy(), fontInfo.width( mText ) + 2 * mMargin, fontInfo.ascent() + 2 * mMargin ) ); + setSceneRect( QRectF( transform().dx(), transform().dy(), fontInfo.width( mText ) + 2 * mMargin + 2 * pen().widthF(), fontInfo.ascent() + 2 * mMargin + 2 * pen().widthF()) ); } QFont QgsComposerLabel::font() const