┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp15
-rw-r--r--src/kitemviews/kstandarditemlistwidget.h7
2 files changed, 20 insertions, 2 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 01b135038..0088e4116 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -1205,6 +1205,16 @@ QString KStandardItemListWidget::elideRightKeepExtension(const QString &text, in
return m_customizedFontMetrics.elidedText(text, Qt::ElideRight, elidingWidth);
}
+QString KStandardItemListWidget::escapeString(const QString &text) const
+{
+ QString escaped(text);
+
+ const QChar returnSymbol(0x21b5);
+ escaped.replace('\n', returnSymbol);
+
+ return escaped;
+}
+
void KStandardItemListWidget::updateIconsLayoutTextCache()
{
// +------+
@@ -1227,7 +1237,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
// Initialize properties for the "text" role. It will be used as anchor
// for initializing the position of the other roles.
TextInfo *nameTextInfo = m_textInfo.value("text");
- const QString nameText = KStringHandler::preProcessWrap(values["text"].toString());
+ const QString nameText = KStringHandler::preProcessWrap(escapeString(values["text"].toString()));
nameTextInfo->staticText.setText(nameText);
// Calculate the number of lines required for the name and the required width
@@ -1348,7 +1358,7 @@ void KStandardItemListWidget::updateCompactLayoutTextCache()
qreal y = qRound((widgetHeight - textLinesHeight) / 2);
const qreal maxWidth = size().width() - x - option.padding;
for (const QByteArray &role : qAsConst(m_sortedVisibleRoles)) {
- const QString text = roleText(role, values);
+ const QString text = escapeString(roleText(role, values));
TextInfo *textInfo = m_textInfo.value(role);
textInfo->staticText.setText(text);
@@ -1407,6 +1417,7 @@ void KStandardItemListWidget::updateDetailsLayoutTextCache()
const bool isTextRole = (role == "text");
if (isTextRole) {
+ text = escapeString(text);
availableTextWidth -= firstColumnInc - sidePadding();
}
diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h
index c4f80af1d..52cde1423 100644
--- a/src/kitemviews/kstandarditemlistwidget.h
+++ b/src/kitemviews/kstandarditemlistwidget.h
@@ -209,6 +209,13 @@ private:
QString elideRightKeepExtension(const QString &text, int elidingWidth) const;
/**
+ * Escapes text for display purposes.
+ *
+ * Replaces '\n' with Unicode line break (U+21B5).
+ */
+ QString escapeString(const QString &text) const;
+
+ /**
* Closes the role editor and returns the focus back
* to the KItemListContainer.
*/