summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/dbustray/qdbustraytypes.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/platformsupport/dbustray/qdbustraytypes.cpp b/src/platformsupport/dbustray/qdbustraytypes.cpp
index bd64c59274..de0c3c30a6 100644
--- a/src/platformsupport/dbustray/qdbustraytypes.cpp
+++ b/src/platformsupport/dbustray/qdbustraytypes.cpp
@@ -45,27 +45,33 @@
#include <QDebug>
#include <QtEndian>
#include <QPainter>
+#include <QGuiApplication>
#include <qpa/qplatformmenu.h>
#include "qdbusplatformmenu_p.h"
QT_BEGIN_NAMESPACE
-static const int IconSizeLimit = 32;
-static const int IconNormalSmallSize = 22;
+static const int IconSizeLimit = 64 * qGuiApp->devicePixelRatio();
+static const int IconNormalSmallSize = 22 * qGuiApp->devicePixelRatio();
+static const int IconNormalMediumSize = 64 * qGuiApp->devicePixelRatio();
QXdgDBusImageVector iconToQXdgDBusImageVector(const QIcon &icon)
{
QXdgDBusImageVector ret;
QList<QSize> sizes = icon.availableSizes();
- // Omit any size larger than 32 px, to save D-Bus bandwidth;
- // and ensure that 22px or smaller exists, because it's a common size.
+ // Omit any size larger than 64 px, to save D-Bus bandwidth;
+ // ensure that 22px or smaller exists, because it's a common size;
+ // and ensure that something between 22px and 64px exists, for better scaling to other sizes.
bool hasSmallIcon = false;
+ bool hasMediumIcon = false;
QList<QSize> toRemove;
Q_FOREACH (const QSize &size, sizes) {
int maxSize = qMax(size.width(), size.height());
if (maxSize <= IconNormalSmallSize)
hasSmallIcon = true;
+ else if (maxSize <= IconNormalMediumSize)
+ hasMediumIcon = true;
else if (maxSize > IconSizeLimit)
toRemove << size;
}
@@ -73,7 +79,8 @@ QXdgDBusImageVector iconToQXdgDBusImageVector(const QIcon &icon)
sizes.removeOne(size);
if (!hasSmallIcon)
sizes.append(QSize(IconNormalSmallSize, IconNormalSmallSize));
-
+ if (!hasMediumIcon)
+ sizes.append(QSize(IconNormalMediumSize, IconNormalMediumSize));
foreach (QSize size, sizes) {
// Protocol specifies ARGB32 format in network byte order
QImage im = icon.pixmap(size).toImage().convertToFormat(QImage::Format_ARGB32);