]> cloud.milkyroute.net Git - dolphin.git/commitdiff
[KItemListSelectionToggle] Adjust painting icon for high dpi scaling
authorKai Uwe Broulik <kde@privat.broulik.de>
Thu, 19 Jul 2018 08:17:16 +0000 (10:17 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Thu, 19 Jul 2018 08:17:38 +0000 (10:17 +0200)
Instead of using KIconLoader which currently doesn't support high dpi scaling, use QIcon::fromTheme which can.

Differential Revision: https://phabricator.kde.org/D14222

src/kitemviews/private/kitemlistselectiontoggle.cpp

index d6e434244c91f0e70499160e1aeebfb673443f54..5519e4da8d2ad78cecab31d8428595efe553aebb 100644 (file)
@@ -21,9 +21,9 @@
 
 #include <KIconLoader>
 
+#include <QIcon>
 #include <QPainter>
 
-
 KItemListSelectionToggle::KItemListSelectionToggle(QGraphicsItem* parent) :
     QGraphicsWidget(parent, nullptr),
     m_checked(false),
@@ -67,8 +67,8 @@ void KItemListSelectionToggle::paint(QPainter* painter, const QStyleOptionGraphi
         updatePixmap();
     }
 
-    const qreal x = (size().width()  - qreal(m_pixmap.width()))  / 2;
-    const qreal y = (size().height() - qreal(m_pixmap.height())) / 2;
+    const qreal x = (size().width()  - qreal(m_pixmap.width() / m_pixmap.devicePixelRatioF()))  / 2;
+    const qreal y = (size().height() - qreal(m_pixmap.height() / m_pixmap.devicePixelRatioF())) / 2;
     painter->drawPixmap(x, y, m_pixmap);
 }
 
@@ -77,7 +77,7 @@ void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event)
     QGraphicsWidget::resizeEvent(event);
 
     if (!m_pixmap.isNull()) {
-        const int pixmapSize = m_pixmap.size().width(); // Pixmap width is always equal pixmap height
+        const int pixmapSize = m_pixmap.size().width() / m_pixmap.devicePixelRatioF(); // Pixmap width is always equal pixmap height
 
         if (pixmapSize != iconSize()) {
             // If the required icon size is different from the actual pixmap size,
@@ -91,8 +91,7 @@ void KItemListSelectionToggle::resizeEvent(QGraphicsSceneResizeEvent* event)
 void KItemListSelectionToggle::updatePixmap()
 {
     const QString icon = m_checked ? QStringLiteral("emblem-remove") : QStringLiteral("emblem-added");
-    const KIconLoader::States state = m_hovered ? KIconLoader::ActiveState : KIconLoader::DisabledState;
-    m_pixmap = KIconLoader::global()->loadIcon(icon, KIconLoader::Desktop, iconSize(), state);
+    m_pixmap = QIcon::fromTheme(icon).pixmap(iconSize(), m_hovered ? QIcon::Active : QIcon::Disabled);
 }
 
 int KItemListSelectionToggle::iconSize() const