]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kstandarditemlistwidget.cpp
Add phone UI
[dolphin.git] / src / kitemviews / kstandarditemlistwidget.cpp
index e3e925c035b72b0afa73ef814c8b00ac2d7d60ca..fe686d4fe4d6f0b6024c088f497c76b8aab21417 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <KIconEffect>
 #include <KIconLoader>
+#include <KIconUtils>
 #include <KRatingPainter>
 #include <KStringHandler>
 
@@ -24,6 +25,7 @@
 #include <QGraphicsView>
 #include <QPixmapCache>
 #include <QStyleOption>
+#include <QTextBoundaryFinder>
 #include <QVariantAnimation>
 
 // #define KSTANDARDITEMLISTWIDGET_DEBUG
@@ -811,9 +813,19 @@ void KStandardItemListWidget::siblingsInformationChanged(const QBitArray &curren
     m_dirtyLayout = true;
 }
 
+int KStandardItemListWidget::numberOfUnicodeCharactersIn(const QString &text)
+{
+    int count = 0;
+    QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::Grapheme, text);
+    while (boundaryFinder.toNextBoundary() != -1) {
+        ++count;
+    }
+    return count;
+}
+
 int KStandardItemListWidget::selectionLength(const QString &text) const
 {
-    return text.length();
+    return numberOfUnicodeCharactersIn(text);
 }
 
 void KStandardItemListWidget::editedRoleChanged(const QByteArray &current, const QByteArray &previous)
@@ -1647,30 +1659,12 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin
 
         // Strangely KFileItem::overlays() returns empty string-values, so
         // we need to check first whether an overlay must be drawn at all.
-        // It is more efficient to do it here, as KIconLoader::drawOverlays()
-        // assumes that an overlay will be drawn and has some additional
-        // setup time.
         for (const QString &overlay : overlays) {
             if (!overlay.isEmpty()) {
-                int state = KIconLoader::DefaultState;
-
-                switch (mode) {
-                case QIcon::Normal:
-                    break;
-                case QIcon::Active:
-                    state = KIconLoader::ActiveState;
-                    break;
-                case QIcon::Disabled:
-                    state = KIconLoader::DisabledState;
-                    break;
-                case QIcon::Selected:
-                    state = KIconLoader::SelectedState;
-                    break;
-                }
-
                 // There is at least one overlay, draw all overlays above m_pixmap
                 // and cancel the check
-                KIconLoader::global()->drawOverlays(overlays, pixmap, KIconLoader::Desktop, state);
+                const QSize size = pixmap.size();
+                pixmap = KIconUtils::addOverlays(pixmap, overlays).pixmap(size, mode);
                 break;
             }
         }