┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-06-21 11:23:25 +0000
committerPeter Penz <[email protected]>2009-06-21 11:23:25 +0000
commit2f233f27dac57c22a267a8634be6f6422c3bc685 (patch)
tree01b96bca5a537d78bee40a8aff0c17c65e8441d1 /src
parent1e208254c5816671be7d7ac4753a8888f53062d9 (diff)
fixed issue the label texts with spaces might overlap with other labels
svn path=/trunk/KDE/kdebase/apps/; revision=984673
Diffstat (limited to 'src')
-rw-r--r--src/panels/information/metatextlabel.cpp18
-rw-r--r--src/panels/information/metatextlabel.h21
2 files changed, 30 insertions, 9 deletions
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<MetaInfo> 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