Qt: fix icon repaint inaccuracy

This commit is contained in:
Megamouse 2018-06-28 02:47:36 +02:00 committed by Ivan
commit ed4caf0fbe

View file

@ -911,26 +911,28 @@ bool game_list_frame::DeleteSPUCache(const std::string& base_dir, bool is_intera
QPixmap game_list_frame::PaintedPixmap(const QImage& img, bool paint_config_icon) QPixmap game_list_frame::PaintedPixmap(const QImage& img, bool paint_config_icon)
{ {
QImage scaled = QImage(m_Icon_Size, QImage::Format_ARGB32); const QSize original_size = img.size();
scaled.fill(m_Icon_Color);
QPainter painter(&scaled); QImage image = QImage(original_size, QImage::Format_ARGB32);
image.fill(m_Icon_Color);
QPainter painter(&image);
if (!img.isNull()) if (!img.isNull())
{ {
painter.drawImage(QPoint(0, 0), img.scaled(m_Icon_Size, Qt::KeepAspectRatio, Qt::TransformationMode::SmoothTransformation)); painter.drawImage(QPoint(0, 0), img);
} }
if (paint_config_icon && !m_isListLayout) if (paint_config_icon && !m_isListLayout)
{ {
int width = m_Icon_Size.width() * 0.2; const int width = original_size.width() * 0.2;
QPoint origin = QPoint(m_Icon_Size.width() - width, 0); const QPoint origin = QPoint(original_size.width() - width, 0);
painter.drawImage(origin, QImage(":/Icons/custom_config_2.png").scaled(QSize(width, width), Qt::KeepAspectRatio, Qt::TransformationMode::SmoothTransformation)); painter.drawImage(origin, QImage(":/Icons/custom_config_2.png").scaled(QSize(width, width), Qt::KeepAspectRatio, Qt::TransformationMode::SmoothTransformation));
} }
painter.end(); painter.end();
return QPixmap::fromImage(scaled); return QPixmap::fromImage(image.scaled(m_Icon_Size, Qt::KeepAspectRatio, Qt::TransformationMode::SmoothTransformation));
} }
void game_list_frame::ShowCustomConfigIcon(QTableWidgetItem* item, bool enabled) void game_list_frame::ShowCustomConfigIcon(QTableWidgetItem* item, bool enabled)