mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Fix wrong text eliding in some corner cases.
BUG: 337104 FIXED-IN: 4.14.0 REVIEW: 119546
This commit is contained in:
parent
a31b836479
commit
18a976c435
|
@ -1136,14 +1136,24 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
|
||||||
const int textLength = line.textStart() + line.textLength();
|
const int textLength = line.textStart() + line.textLength();
|
||||||
if (textLength < nameText.length()) {
|
if (textLength < nameText.length()) {
|
||||||
// Elide the last line of the text
|
// Elide the last line of the text
|
||||||
QString lastTextLine = nameText.mid(line.textStart());
|
qreal elidingWidth = maxWidth;
|
||||||
lastTextLine = m_customizedFontMetrics.elidedText(lastTextLine,
|
qreal lastLineWidth;
|
||||||
Qt::ElideRight,
|
do {
|
||||||
maxWidth);
|
QString lastTextLine = nameText.mid(line.textStart());
|
||||||
const QString elidedText = nameText.left(line.textStart()) + lastTextLine;
|
lastTextLine = m_customizedFontMetrics.elidedText(lastTextLine,
|
||||||
nameTextInfo->staticText.setText(elidedText);
|
Qt::ElideRight,
|
||||||
|
elidingWidth);
|
||||||
|
const QString elidedText = nameText.left(line.textStart()) + lastTextLine;
|
||||||
|
nameTextInfo->staticText.setText(elidedText);
|
||||||
|
|
||||||
|
lastLineWidth = m_customizedFontMetrics.boundingRect(lastTextLine).width();
|
||||||
|
|
||||||
|
// We do the text eliding in a loop with decreasing width (1 px / iteration)
|
||||||
|
// to avoid problems related to different width calculation code paths
|
||||||
|
// within Qt. (see bug 337104)
|
||||||
|
elidingWidth -= 1.0;
|
||||||
|
} while (lastLineWidth > maxWidth);
|
||||||
|
|
||||||
const qreal lastLineWidth = m_customizedFontMetrics.boundingRect(lastTextLine).width();
|
|
||||||
nameWidth = qMax(nameWidth, lastLineWidth);
|
nameWidth = qMax(nameWidth, lastLineWidth);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue