]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Icons Mode: Fix wrong width calculation of additional roles
authorPeter Penz <peter.penz19@gmail.com>
Fri, 6 Apr 2012 22:03:06 +0000 (00:03 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 6 Apr 2012 22:03:42 +0000 (00:03 +0200)
src/kitemviews/kfileitemlistwidget.cpp

index 935fb5da2c02735597bf97b9c6a7d08cffd21438..af7ea1523d74c9727e6a42f5cc86c3618050a8eb 100644 (file)
@@ -782,19 +782,19 @@ void KFileItemListWidget::updateIconsLayoutTextCache()
         qreal requiredWidth = 0;
 
         QTextLayout layout(text, option.font);
-        layout.setTextOption(textInfo->staticText.textOption());
+        QTextOption textOption;
+        textOption.setWrapMode(QTextOption::NoWrap);
+        layout.setTextOption(textOption);
+
         layout.beginLayout();
         QTextLine textLine = layout.createLine();
         if (textLine.isValid()) {
             textLine.setLineWidth(maxWidth);
             requiredWidth = textLine.naturalTextWidth();
-            if (textLine.textLength() < text.length()) {
-                // TODO: QFontMetrics::elidedText() works different regarding the given width
-                // in comparison to QTextLine::setLineWidth(). It might happen that the text does
-                // not get elided although it does not fit into the given width. As workaround
-                // the padding is substracted.
-                const QString elidedText = option.fontMetrics.elidedText(text, Qt::ElideRight, maxWidth - padding);
+            if (requiredWidth > maxWidth) {
+                const QString elidedText = option.fontMetrics.elidedText(text, Qt::ElideRight, maxWidth);
                 textInfo->staticText.setText(elidedText);
+                requiredWidth = option.fontMetrics.width(elidedText);
             }
         }
         layout.endLayout();