From 374af4277a419579a8ae5f88c698a2dcb8d95f39 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sat, 24 Oct 2015 12:35:53 +0200 Subject: [PATCH] HighDpi: Fix TabIcon --- src/lib/data/icons.qrc | 1 + src/lib/data/icons/other/loading@2x.png | Bin 0 -> 29802 bytes src/lib/tabwidget/tabicon.cpp | 20 ++++++++++---------- src/lib/tabwidget/tabicon.h | 4 ++-- 4 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 src/lib/data/icons/other/loading@2x.png diff --git a/src/lib/data/icons.qrc b/src/lib/data/icons.qrc index 37b928527..0333f3404 100644 --- a/src/lib/data/icons.qrc +++ b/src/lib/data/icons.qrc @@ -60,6 +60,7 @@ icons/sites/startpage.png icons/sites/w3.png icons/other/loading.png + icons/other/loading@2x.png icons/other/empty-page.png icons/menu/privatebrowsing.png icons/menu/settings.png diff --git a/src/lib/data/icons/other/loading@2x.png b/src/lib/data/icons/other/loading@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa5a3434e95b9e5671f3afb2caa0a7bc5a9a8e2 GIT binary patch literal 29802 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 @@ -57,7 +57,7 @@ void TabIcon::setWebTab(WebTab* tab) void TabIcon::setIcon(const QIcon &icon) { - m_siteImage = icon.pixmap(16).toImage(); + m_sitePixmap = icon.pixmap(16); update(); } @@ -80,7 +80,7 @@ void TabIcon::hideLoadingAnimation() void TabIcon::showIcon() { - m_siteImage = m_tab->icon().pixmap(16).toImage(); + m_sitePixmap = m_tab->icon().pixmap(16); update(); } @@ -101,10 +101,10 @@ void TabIcon::paintEvent(QPaintEvent* event) QPainter p(this); - if (m_animationRunning) { - p.drawImage(0, 0, m_animationImage, m_currentFrame * 16, 0, 16, 16); - } - else { - p.drawImage(0, 0, m_siteImage); - } + const int width = 16 * m_animationPixmap.devicePixelRatio(); + + if (m_animationRunning) + p.drawPixmap(rect(), m_animationPixmap, QRect(m_currentFrame * width, 0, width, width)); + else + p.drawPixmap(rect(), m_sitePixmap); } diff --git a/src/lib/tabwidget/tabicon.h b/src/lib/tabwidget/tabicon.h index b3eb8c745..8340c4a9b 100644 --- a/src/lib/tabwidget/tabicon.h +++ b/src/lib/tabwidget/tabicon.h @@ -50,8 +50,8 @@ private: WebTab* m_tab; QTimer* m_updateTimer; - QImage m_siteImage; - QImage m_animationImage; + QPixmap m_sitePixmap; + QPixmap m_animationPixmap; int m_currentFrame; int m_framesCount; bool m_animationRunning;