diff --git a/src/plugins/platforms/android/qandroidplatformiconengine.cpp b/src/plugins/platforms/android/qandroidplatformiconengine.cpp index 70223922711..faa63dcca13 100644 --- a/src/plugins/platforms/android/qandroidplatformiconengine.cpp +++ b/src/plugins/platforms/android/qandroidplatformiconengine.cpp @@ -572,32 +572,11 @@ QPixmap QAndroidPlatformIconEngine::scaledPixmap(const QSize &size, QIcon::Mode const quint64 cacheKey = calculateCacheKey(mode, state); if (cacheKey != m_cacheKey || m_pixmap.size() != size || m_pixmap.devicePixelRatio() != scale) { m_pixmap = QPixmap(size * scale); - m_pixmap.fill(QColor(0, 0, 0, 0)); + m_pixmap.fill(Qt::transparent); m_pixmap.setDevicePixelRatio(scale); QPainter painter(&m_pixmap); - QFont renderFont(m_iconFont); - renderFont.setPixelSize(size.height()); - painter.setFont(renderFont); - - QPalette palette; - switch (mode) { - case QIcon::Active: - painter.setPen(palette.color(QPalette::Active, QPalette::Accent)); - break; - case QIcon::Normal: - painter.setPen(palette.color(QPalette::Active, QPalette::Text)); - break; - case QIcon::Disabled: - painter.setPen(palette.color(QPalette::Disabled, QPalette::Accent)); - break; - case QIcon::Selected: - painter.setPen(palette.color(QPalette::Active, QPalette::Accent)); - break; - } - - const QRect rect({0, 0}, size); - painter.drawText(rect, Qt::AlignCenter, m_glyphs); + paint(&painter, QRect(QPoint(), size), mode, state); m_cacheKey = cacheKey; } @@ -607,8 +586,31 @@ QPixmap QAndroidPlatformIconEngine::scaledPixmap(const QSize &size, QIcon::Mode void QAndroidPlatformIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) { - const qreal scale = painter->device()->devicePixelRatio(); - painter->drawPixmap(rect, scaledPixmap(rect.size(), mode, state, scale)); + Q_UNUSED(state); + + painter->save(); + QFont renderFont(m_iconFont); + renderFont.setPixelSize(rect.height()); + painter->setFont(renderFont); + + QPalette palette; + switch (mode) { + case QIcon::Active: + painter->setPen(palette.color(QPalette::Active, QPalette::Text)); + break; + case QIcon::Normal: + painter->setPen(palette.color(QPalette::Active, QPalette::Text)); + break; + case QIcon::Disabled: + painter->setPen(palette.color(QPalette::Disabled, QPalette::Text)); + break; + case QIcon::Selected: + painter->setPen(palette.color(QPalette::Active, QPalette::HighlightedText)); + break; + } + + painter->drawText(rect, Qt::AlignCenter, m_glyphs); + painter->restore(); } QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsiconengine.cpp b/src/plugins/platforms/windows/qwindowsiconengine.cpp index 42777df5b5d..4c32f1327f6 100644 --- a/src/plugins/platforms/windows/qwindowsiconengine.cpp +++ b/src/plugins/platforms/windows/qwindowsiconengine.cpp @@ -354,28 +354,7 @@ QPixmap QWindowsIconEngine::scaledPixmap(const QSize &size, QIcon::Mode mode, QI m_pixmap.setDevicePixelRatio(scale); QPainter painter(&m_pixmap); - QFont renderFont(m_iconFont); - renderFont.setPixelSize(size.height()); - painter.setFont(renderFont); - - QPalette palette; - switch (mode) { - case QIcon::Active: - painter.setPen(palette.color(QPalette::Active, QPalette::Text)); - break; - case QIcon::Normal: - painter.setPen(palette.color(QPalette::Active, QPalette::Text)); - break; - case QIcon::Disabled: - painter.setPen(palette.color(QPalette::Disabled, QPalette::Text)); - break; - case QIcon::Selected: - painter.setPen(palette.color(QPalette::Active, QPalette::HighlightedText)); - break; - } - - const QRect rect({0, 0}, size); - painter.drawText(rect, Qt::AlignCenter, m_glyphs); + paint(&painter, QRect(QPoint(), size), mode, state); m_cacheKey = cacheKey; } @@ -385,8 +364,31 @@ QPixmap QWindowsIconEngine::scaledPixmap(const QSize &size, QIcon::Mode mode, QI void QWindowsIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) { - const qreal scale = painter->device()->devicePixelRatio(); - painter->drawPixmap(rect, scaledPixmap(rect.size(), mode, state, scale)); + Q_UNUSED(state); + + painter->save(); + QFont renderFont(m_iconFont); + renderFont.setPixelSize(rect.height()); + painter->setFont(renderFont); + + QPalette palette; + switch (mode) { + case QIcon::Active: + painter->setPen(palette.color(QPalette::Active, QPalette::Text)); + break; + case QIcon::Normal: + painter->setPen(palette.color(QPalette::Active, QPalette::Text)); + break; + case QIcon::Disabled: + painter->setPen(palette.color(QPalette::Disabled, QPalette::Text)); + break; + case QIcon::Selected: + painter->setPen(palette.color(QPalette::Active, QPalette::HighlightedText)); + break; + } + + painter->drawText(rect, Qt::AlignCenter, m_glyphs); + painter->restore(); } QT_END_NAMESPACE