mirror of
https://github.com/PCSX2/pcsx2.git
synced 2025-12-16 04:08:48 +00:00
Qt: Fix DPI icon scaling in various settings windows
This commit is contained in:
parent
52a9a4649c
commit
c5f916bda0
@ -2,6 +2,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0+
|
// SPDX-License-Identifier: GPL-3.0+
|
||||||
|
|
||||||
#include "CoverDownloadDialog.h"
|
#include "CoverDownloadDialog.h"
|
||||||
|
#include "QtUtils.h"
|
||||||
|
|
||||||
#include "pcsx2/GameList.h"
|
#include "pcsx2/GameList.h"
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ CoverDownloadDialog::CoverDownloadDialog(QWidget* parent /*= nullptr*/)
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
m_ui.coverIcon->setPixmap(QIcon::fromTheme("artboard-2-line").pixmap(32));
|
QtUtils::SetScalableIcon(m_ui.coverIcon, QIcon::fromTheme(QStringLiteral("artboard-2-line")), QSize(32, 32));
|
||||||
updateEnabled();
|
updateEnabled();
|
||||||
|
|
||||||
connect(m_ui.start, &QPushButton::clicked, this, &CoverDownloadDialog::onStartClicked);
|
connect(m_ui.start, &QPushButton::clicked, this, &CoverDownloadDialog::onStartClicked);
|
||||||
|
|||||||
@ -374,4 +374,37 @@ namespace QtUtils
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class IconVariableDpiFilter : QObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit IconVariableDpiFilter(QLabel* lbl, const QIcon& icon, const QSize& size, QObject* parent = nullptr)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_lbl{lbl}
|
||||||
|
, m_icn{icon}
|
||||||
|
, m_size{size}
|
||||||
|
{
|
||||||
|
lbl->installEventFilter(this);
|
||||||
|
m_lbl->setPixmap(m_icn.pixmap(m_size, m_lbl->devicePixelRatioF()));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool eventFilter(QObject* object, QEvent* event) override
|
||||||
|
{
|
||||||
|
if (object == m_lbl && event->type() == QEvent::DevicePixelRatioChange)
|
||||||
|
m_lbl->setPixmap(m_icn.pixmap(m_size, m_lbl->devicePixelRatioF()));
|
||||||
|
// Don't block the event
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QLabel* m_lbl;
|
||||||
|
QIcon m_icn;
|
||||||
|
QSize m_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
void SetScalableIcon(QLabel* lbl, const QIcon& icon, const QSize& size)
|
||||||
|
{
|
||||||
|
new IconVariableDpiFilter(lbl, icon, size, lbl);
|
||||||
|
}
|
||||||
} // namespace QtUtils
|
} // namespace QtUtils
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class QAction;
|
|||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QFileInfo;
|
class QFileInfo;
|
||||||
class QFrame;
|
class QFrame;
|
||||||
|
class QIcon;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QKeyEvent;
|
class QKeyEvent;
|
||||||
class QSlider;
|
class QSlider;
|
||||||
@ -102,4 +103,8 @@ namespace QtUtils
|
|||||||
bool IsLightTheme(const QPalette& palette);
|
bool IsLightTheme(const QPalette& palette);
|
||||||
|
|
||||||
bool IsCompositorManagerRunning();
|
bool IsCompositorManagerRunning();
|
||||||
|
|
||||||
|
/// Sets the scalable icon to a given label (svg icons, or icons with multiple size pixmaps)
|
||||||
|
/// The icon will then be reloaded on DPR changes using an event filter
|
||||||
|
void SetScalableIcon(QLabel* lbl, const QIcon& icon, const QSize& size);
|
||||||
} // namespace QtUtils
|
} // namespace QtUtils
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "AchievementLoginDialog.h"
|
#include "AchievementLoginDialog.h"
|
||||||
#include "QtHost.h"
|
#include "QtHost.h"
|
||||||
|
#include "QtUtils.h"
|
||||||
|
|
||||||
#include "pcsx2/Achievements.h"
|
#include "pcsx2/Achievements.h"
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ AchievementLoginDialog::AchievementLoginDialog(QWidget* parent, Achievements::Lo
|
|||||||
, m_reason(reason)
|
, m_reason(reason)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
m_ui.loginIcon->setPixmap(QIcon::fromTheme("login-box-line").pixmap(32));
|
QtUtils::SetScalableIcon(m_ui.loginIcon, QIcon::fromTheme(QStringLiteral("login-box-line")), QSize(32, 32));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
|
||||||
// Adjust text if needed based on reason.
|
// Adjust text if needed based on reason.
|
||||||
@ -116,7 +117,6 @@ void AchievementLoginDialog::processLoginResult(bool result, const QString& mess
|
|||||||
g_emu_thread->resetVM();
|
g_emu_thread->resetVM();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
done(0);
|
done(0);
|
||||||
|
|||||||
@ -342,7 +342,7 @@ void AudioSettingsWidget::onExpansionSettingsClicked()
|
|||||||
QDialog dlg(QtUtils::GetRootWidget(this));
|
QDialog dlg(QtUtils::GetRootWidget(this));
|
||||||
Ui::AudioExpansionSettingsDialog dlgui;
|
Ui::AudioExpansionSettingsDialog dlgui;
|
||||||
dlgui.setupUi(&dlg);
|
dlgui.setupUi(&dlg);
|
||||||
dlgui.icon->setPixmap(QIcon::fromTheme(QStringLiteral("volume-up-line")).pixmap(32, 32));
|
QtUtils::SetScalableIcon(dlgui.icon, QIcon::fromTheme(QStringLiteral("volume-up-line")), QSize(32, 32));
|
||||||
|
|
||||||
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
||||||
SettingWidgetBinder::BindWidgetToIntSetting(sif, dlgui.blockSize, "SPU2/Output", "ExpandBlockSize",
|
SettingWidgetBinder::BindWidgetToIntSetting(sif, dlgui.blockSize, "SPU2/Output", "ExpandBlockSize",
|
||||||
@ -431,7 +431,7 @@ void AudioSettingsWidget::onStretchSettingsClicked()
|
|||||||
QDialog dlg(QtUtils::GetRootWidget(this));
|
QDialog dlg(QtUtils::GetRootWidget(this));
|
||||||
Ui::AudioStretchSettingsDialog dlgui;
|
Ui::AudioStretchSettingsDialog dlgui;
|
||||||
dlgui.setupUi(&dlg);
|
dlgui.setupUi(&dlg);
|
||||||
dlgui.icon->setPixmap(QIcon::fromTheme(QStringLiteral("volume-up-line")).pixmap(32, 32));
|
QtUtils::SetScalableIcon(dlgui.icon, QIcon::fromTheme(QStringLiteral("volume-up-line")), QSize(32, 32));
|
||||||
|
|
||||||
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
||||||
SettingWidgetBinder::BindWidgetToIntSetting(sif, dlgui.sequenceLength, "SPU2/Output", "StretchSequenceLengthMS",
|
SettingWidgetBinder::BindWidgetToIntSetting(sif, dlgui.sequenceLength, "SPU2/Output", "StretchSequenceLengthMS",
|
||||||
|
|||||||
@ -170,7 +170,7 @@ ControllerMouseSettingsDialog::ControllerMouseSettingsDialog(QWidget* parent, Co
|
|||||||
|
|
||||||
SettingsInterface* sif = dialog->getProfileSettingsInterface();
|
SettingsInterface* sif = dialog->getProfileSettingsInterface();
|
||||||
|
|
||||||
m_ui.icon->setPixmap(QIcon::fromTheme(QStringLiteral("mouse-line")).pixmap(32, 32));
|
QtUtils::SetScalableIcon(m_ui.icon, QIcon::fromTheme(QStringLiteral("mouse-line")), QSize(32, 32));
|
||||||
|
|
||||||
ControllerSettingWidgetBinder::BindWidgetToInputProfileFloat(sif, m_ui.pointerXSpeedSlider, "Pad", "PointerXSpeed", 40.0f);
|
ControllerSettingWidgetBinder::BindWidgetToInputProfileFloat(sif, m_ui.pointerXSpeedSlider, "Pad", "PointerXSpeed", 40.0f);
|
||||||
ControllerSettingWidgetBinder::BindWidgetToInputProfileFloat(sif, m_ui.pointerYSpeedSlider, "Pad", "PointerYSpeed", 40.0f);
|
ControllerSettingWidgetBinder::BindWidgetToInputProfileFloat(sif, m_ui.pointerYSpeedSlider, "Pad", "PointerYSpeed", 40.0f);
|
||||||
@ -202,11 +202,10 @@ ControllerMappingSettingsDialog::ControllerMappingSettingsDialog(ControllerSetti
|
|||||||
|
|
||||||
SettingsInterface* sif = parent->getProfileSettingsInterface();
|
SettingsInterface* sif = parent->getProfileSettingsInterface();
|
||||||
|
|
||||||
m_ui.icon->setPixmap(QIcon::fromTheme(QStringLiteral("settings-3-line")).pixmap(32, 32));
|
QtUtils::SetScalableIcon(m_ui.icon, QIcon::fromTheme(QStringLiteral("settings-3-line")), QSize(32, 32));
|
||||||
|
|
||||||
ControllerSettingWidgetBinder::BindWidgetToInputProfileBool(sif, m_ui.ignoreInversion, "InputSources", "IgnoreInversion", false);
|
ControllerSettingWidgetBinder::BindWidgetToInputProfileBool(sif, m_ui.ignoreInversion, "InputSources", "IgnoreInversion", false);
|
||||||
|
|
||||||
connect(m_ui.buttonBox->button(QDialogButtonBox::Close), &QPushButton::clicked, this, &QDialog::accept);
|
connect(m_ui.buttonBox->button(QDialogButtonBox::Close), &QPushButton::clicked, this, &QDialog::accept);
|
||||||
}
|
}
|
||||||
|
|
||||||
ControllerMappingSettingsDialog::~ControllerMappingSettingsDialog() = default;
|
ControllerMappingSettingsDialog::~ControllerMappingSettingsDialog() = default;
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
#include <QtWidgets/QPushButton>
|
#include <QtWidgets/QPushButton>
|
||||||
|
|
||||||
#include "Settings/MemoryCardCreateDialog.h"
|
#include "Settings/MemoryCardCreateDialog.h"
|
||||||
|
#include "QtUtils.h"
|
||||||
|
|
||||||
#include "pcsx2/SIO/Memcard/MemoryCardFile.h"
|
#include "pcsx2/SIO/Memcard/MemoryCardFile.h"
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ MemoryCardCreateDialog::MemoryCardCreateDialog(QWidget* parent /* = nullptr */)
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
m_ui.icon->setPixmap(QIcon::fromTheme("memcard-line").pixmap(m_ui.icon->width()));
|
QtUtils::SetScalableIcon(m_ui.icon, QIcon::fromTheme(QStringLiteral("memcard-line")), QSize(m_ui.icon->width(), m_ui.icon->width()));
|
||||||
|
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user