Browse Source

Merge pull request #8868 from Chocobo1/macos

Fix GUI scaling factor on macOS
adaptive-webui-19844
sledgehammer999 7 years ago committed by GitHub
parent
commit
a1a6a7ef56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/gui/about_imp.h
  2. 10
      src/gui/mainwindow.cpp
  3. 22
      src/gui/utils.cpp
  4. 1
      src/gui/utils.h
  5. 1
      src/icons.qrc
  6. BIN
      src/icons/skin/qbittorrent16.png
  7. 2
      src/webui/www/private/index.html
  8. 2
      src/webui/www/public/login.html

2
src/gui/about_imp.h

@ -55,7 +55,7 @@ public:
lb_name->setText("<b><h2>qBittorrent " QBT_VERSION " (32-bit)</h2></b>"); lb_name->setText("<b><h2>qBittorrent " QBT_VERSION " (32-bit)</h2></b>");
#endif #endif
logo->setPixmap(Utils::Gui::scaledPixmap(":/icons/skin/qbittorrent32.png", this)); logo->setPixmap(Utils::Gui::scaledPixmapSvg(":/icons/skin/qbittorrent-tray.svg", this, 32));
// About // About
QString aboutText = QString( QString aboutText = QString(

10
src/gui/mainwindow.cpp

@ -160,11 +160,13 @@ MainWindow::MainWindow(QWidget *parent)
// Setting icons // Setting icons
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
if (Preferences::instance()->useSystemIconTheme()) const QIcon appLogo = Preferences::instance()->useSystemIconTheme()
setWindowIcon(QIcon::fromTheme("qbittorrent", QIcon(":/icons/skin/qbittorrent32.png"))); ? QIcon::fromTheme("qbittorrent", QIcon(":/icons/skin/qbittorrent-tray.svg"))
else : QIcon(":/icons/skin/qbittorrent-tray.svg");
#else
const QIcon appLogo(":/icons/skin/qbittorrent-tray.svg");
#endif // Q_OS_UNIX #endif // Q_OS_UNIX
setWindowIcon(QIcon(":/icons/skin/qbittorrent32.png")); setWindowIcon(appLogo);
#endif // Q_OS_MAC #endif // Q_OS_MAC
#if (defined(Q_OS_UNIX)) #if (defined(Q_OS_UNIX))

22
src/gui/utils.cpp

@ -30,6 +30,7 @@
#include <QApplication> #include <QApplication>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QPixmapCache>
#include <QScreen> #include <QScreen>
#include <QStyle> #include <QStyle>
#include <QWidget> #include <QWidget>
@ -45,16 +46,21 @@ void Utils::Gui::resize(QWidget *widget, const QSize &newSize)
qreal Utils::Gui::screenScalingFactor(const QWidget *widget) qreal Utils::Gui::screenScalingFactor(const QWidget *widget)
{ {
if (!widget)
return 1;
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
const int screen = qApp->desktop()->screenNumber(widget); const int screen = qApp->desktop()->screenNumber(widget);
return (QApplication::screens()[screen]->logicalDotsPerInch() / 96); return (QApplication::screens()[screen]->logicalDotsPerInch() / 96);
#elif defined(Q_OS_MAC)
return 1;
#else #else
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
return widget->devicePixelRatioF(); return widget->devicePixelRatioF();
#else #else
return widget->devicePixelRatio(); return widget->devicePixelRatio();
#endif #endif
#endif // Q_OS_WIN #endif
} }
QPixmap Utils::Gui::scaledPixmap(const QString &path, const QWidget *widget, const int height) QPixmap Utils::Gui::scaledPixmap(const QString &path, const QWidget *widget, const int height)
@ -64,6 +70,20 @@ QPixmap Utils::Gui::scaledPixmap(const QString &path, const QWidget *widget, con
return pixmap.scaledToHeight(scaledHeight, Qt::SmoothTransformation); return pixmap.scaledToHeight(scaledHeight, Qt::SmoothTransformation);
} }
QPixmap Utils::Gui::scaledPixmapSvg(const QString &path, const QWidget *widget, const int baseHeight)
{
const int scaledHeight = baseHeight * Utils::Gui::screenScalingFactor(widget);
const QString normalizedKey = path + "@" + QString::number(scaledHeight);
QPixmap pm;
QPixmapCache cache;
if (!cache.find(normalizedKey, &pm)) {
pm = QIcon(path).pixmap(scaledHeight);
cache.insert(normalizedKey, pm);
}
return pm;
}
QSize Utils::Gui::smallIconSize(const QWidget *widget) QSize Utils::Gui::smallIconSize(const QWidget *widget)
{ {
// Get DPI scaled icon size (device-dependent), see QT source // Get DPI scaled icon size (device-dependent), see QT source

1
src/gui/utils.h

@ -49,6 +49,7 @@ namespace Utils
} }
QPixmap scaledPixmap(const QString &path, const QWidget *widget, const int height = 0); QPixmap scaledPixmap(const QString &path, const QWidget *widget, const int height = 0);
QPixmap scaledPixmapSvg(const QString &path, const QWidget *widget, const int baseHeight);
QSize smallIconSize(const QWidget *widget = nullptr); QSize smallIconSize(const QWidget *widget = nullptr);
QSize mediumIconSize(const QWidget *widget = nullptr); QSize mediumIconSize(const QWidget *widget = nullptr);
QSize largeIconSize(const QWidget *widget = nullptr); QSize largeIconSize(const QWidget *widget = nullptr);

1
src/icons.qrc

@ -361,7 +361,6 @@
<file>icons/skin/qbittorrent-tray.svg</file> <file>icons/skin/qbittorrent-tray.svg</file>
<file>icons/skin/qbittorrent-tray-dark.svg</file> <file>icons/skin/qbittorrent-tray-dark.svg</file>
<file>icons/skin/qbittorrent-tray-light.svg</file> <file>icons/skin/qbittorrent-tray-light.svg</file>
<file>icons/skin/qbittorrent16.png</file>
<file>icons/skin/qbittorrent32.png</file> <file>icons/skin/qbittorrent32.png</file>
<file>icons/skin/queued.png</file> <file>icons/skin/queued.png</file>
<file>icons/skin/ratio.png</file> <file>icons/skin/ratio.png</file>

BIN
src/icons/skin/qbittorrent16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 986 B

2
src/webui/www/private/index.html

@ -5,7 +5,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10" /> <meta http-equiv="X-UA-Compatible" content="IE=10" />
<title>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title> <title>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title>
<link rel="icon" type="image/png" href="images/skin/qbittorrent16.png" /> <link rel="icon" type="image/png" href="images/skin/qbittorrent32.png" />
<link rel="stylesheet" href="css/dynamicTable.css" type="text/css" /> <link rel="stylesheet" href="css/dynamicTable.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
<!--<link rel="stylesheet" type="text/css" href="css/Content.css" />--> <!--<link rel="stylesheet" type="text/css" href="css/Content.css" />-->

2
src/webui/www/public/login.html

@ -4,7 +4,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title> <title>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title>
<link rel="icon" type="image/png" href="images/skin/qbittorrent16.png" /> <link rel="icon" type="image/png" href="images/skin/qbittorrent32.png" />
<link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
<script src="scripts/lib/mootools-1.2-core-yc.js"></script> <script src="scripts/lib/mootools-1.2-core-yc.js"></script>
<script> <script>

Loading…
Cancel
Save