diff options
| author | Peter Penz <[email protected]> | 2009-02-17 22:24:14 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2009-02-17 22:24:14 +0000 |
| commit | 93b955c3e634530a1910c522a3c973ba031df6bb (patch) | |
| tree | 4bf48104878e9c70bfe0d9b9427d5f87d0e3b2eb /src/panels/information/metatextlabel.cpp | |
| parent | 85dbeb2598c5e57235e4c8df0239ce8fe89dea6e (diff) | |
assure that the size hint calculation and the painting code are consistent
svn path=/trunk/KDE/kdebase/apps/; revision=927623
Diffstat (limited to 'src/panels/information/metatextlabel.cpp')
| -rw-r--r-- | src/panels/information/metatextlabel.cpp | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/panels/information/metatextlabel.cpp b/src/panels/information/metatextlabel.cpp index 017d5e1dc..94ed22666 100644 --- a/src/panels/information/metatextlabel.cpp +++ b/src/panels/information/metatextlabel.cpp @@ -71,9 +71,8 @@ void MetaTextLabel::paintEvent(QPaintEvent* event) const int infoWidth = width() / 2; const int labelWidth = infoWidth - 2 * Spacing; const int infoX = infoWidth; - const int maxHeight = fontMetrics().height() * 5; + const int maxHeight = maxHeightPerLine(); - QRect boundingRect; foreach (const MetaInfo& metaInfo, m_metaInfos) { // draw label (e. g. "Date:") painter.setPen(labelColor); @@ -85,17 +84,27 @@ void MetaTextLabel::paintEvent(QPaintEvent* event) painter.setPen(infoColor); painter.drawText(infoX, y, infoWidth, maxHeight, Qt::AlignTop | Qt::AlignLeft | Qt::TextWordWrap, - metaInfo.info, - &boundingRect); + metaInfo.info); - y += boundingRect.height() + Spacing; + y += requiredHeight(metaInfo); } } +void MetaTextLabel::resizeEvent(QResizeEvent* event) +{ + QWidget::resizeEvent(event); + + int minimumHeight = 0; + foreach (const MetaInfo& metaInfo, m_metaInfos) { + minimumHeight += requiredHeight(metaInfo); + } + setMinimumHeight(minimumHeight); +} + int MetaTextLabel::requiredHeight(const MetaInfo& metaInfo) const { QTextOption textOption; - textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + textOption.setWrapMode(QTextOption::WordWrap); qreal height = 0; const int leading = fontMetrics().leading(); @@ -115,7 +124,17 @@ int MetaTextLabel::requiredHeight(const MetaInfo& metaInfo) const } textLayout.endLayout(); - return static_cast<int>(height) + Spacing; + int adjustedHeight = static_cast<int>(height); + if (adjustedHeight > maxHeightPerLine()) { + adjustedHeight = maxHeightPerLine(); + } + + return adjustedHeight + Spacing; +} + +int MetaTextLabel::maxHeightPerLine() const +{ + return fontMetrics().height() * 100; } #include "metatextlabel.moc" |
