From: Peter Penz Date: Sun, 21 Jun 2009 11:23:25 +0000 (+0000) Subject: fixed issue the label texts with spaces might overlap with other labels X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/2f233f27dac57c22a267a8634be6f6422c3bc685 fixed issue the label texts with spaces might overlap with other labels svn path=/trunk/KDE/kdebase/apps/; revision=984673 --- diff --git a/src/panels/information/metatextlabel.cpp b/src/panels/information/metatextlabel.cpp index baa4d0327..793f72669 100644 --- a/src/panels/information/metatextlabel.cpp +++ b/src/panels/information/metatextlabel.cpp @@ -81,8 +81,8 @@ void MetaTextLabel::paintEvent(QPaintEvent* event) labelColor.setAlpha(128); int y = 0; - const int infoWidth = width() / 2; - const int labelWidth = infoWidth - 2 * Spacing; + const int infoWidth = infoTextWidth(); + const int labelWidth = labelTextWidth(); const int infoX = infoWidth; const int maxHeight = maxHeightPerLine(); @@ -114,23 +114,29 @@ void MetaTextLabel::resizeEvent(QResizeEvent* event) setMinimumHeight(minimumHeight); } -int MetaTextLabel::requiredHeight(const MetaInfo& metaInfo) const +int MetaTextLabel::requiredHeight(const MetaInfo& info) const +{ + const int labelTextHeight = requiredHeight(info.label, labelTextWidth()); + const int infoTextHeight = requiredHeight(info.info, infoTextWidth()); + return qMax(labelTextHeight, infoTextHeight); +} + +int MetaTextLabel::requiredHeight(const QString& text, int width) const { QTextOption textOption; textOption.setWrapMode(QTextOption::WordWrap); qreal height = 0; const int leading = fontMetrics().leading(); - const int availableWidth = width() / 2; - QTextLayout textLayout(metaInfo.info); + QTextLayout textLayout(text); textLayout.setFont(font()); textLayout.setTextOption(textOption); textLayout.beginLayout(); QTextLine line = textLayout.createLine(); while (line.isValid()) { - line.setLineWidth(availableWidth); + line.setLineWidth(width); height += leading; height += line.height(); line = textLayout.createLine(); diff --git a/src/panels/information/metatextlabel.h b/src/panels/information/metatextlabel.h index e1486c675..500cbca69 100644 --- a/src/panels/information/metatextlabel.h +++ b/src/panels/information/metatextlabel.h @@ -54,10 +54,15 @@ private: QList m_metaInfos; /** - * Returns the required height in pixels for \a metaInfo to - * fit into the available width of the widget. + * Returns the required height in pixels for the + * label text and information text provided by \a info. */ - int requiredHeight(const MetaInfo& metaInfo) const; + int requiredHeight(const MetaInfo& info) const; + + /** Helper method for requiredHeight(const MetaInfo& info). */ + int requiredHeight(const QString& text, int width) const; + int labelTextWidth() const; + int infoTextWidth() const; /** * Returns the maximum height in pixels for the text of @@ -67,4 +72,14 @@ private: int maxHeightPerLine() const; }; +inline int MetaTextLabel::labelTextWidth() const +{ + return width() / 2 - 2 * Spacing; +} + +inline int MetaTextLabel::infoTextWidth() const +{ + return width() / 2; +} + #endif