From 1c0d0f8dbc9d4d7ee8284beb94dc8537934baea1 Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Tue, 31 Jan 2023 17:23:37 +0900 Subject: [PATCH] HiDPI workaroud --- main/main.cpp | 13 ++++++++++++- translations/fa_IR.ts | 4 ++++ translations/zh_CN.ts | 4 ++++ ui/dialog_basic_settings.cpp | 15 +++++++++++++++ ui/dialog_basic_settings.ui | 36 +++++++++++++++++++++++------------- 5 files changed, 58 insertions(+), 14 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 2465fa3..b90c216 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -32,12 +32,13 @@ int main(int argc, char *argv[]) { Windows_SetCrashHandler(); #endif - QApplication a(argc, argv); + // pre-init QApplication #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton); #endif QApplication::setAttribute(Qt::AA_DontUseNativeDialogs); QApplication::setQuitOnLastWindowClosed(false); + auto preQApp = new QApplication(argc, argv); // Clean QDir::setCurrent(QApplication::applicationDirPath()); @@ -74,6 +75,16 @@ int main(int argc, char *argv[]) { QDir::setCurrent(wd.absoluteFilePath("config")); QDir("temp").removeRecursively(); + // HiDPI workaround + if (ReadFileText("./groups/HiDPI").toInt() == 1) { + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + } + + // init QApplication + delete preQApp; + QApplication a(argc, argv); + // RunGuard RunGuard guard("nekoray" + wd.absolutePath()); quint64 guard_data_in = GetRandomUint64(); diff --git a/translations/fa_IR.ts b/translations/fa_IR.ts index 04a18ad..ce5a2a4 100644 --- a/translations/fa_IR.ts +++ b/translations/fa_IR.ts @@ -229,6 +229,10 @@ Password + + Maybe useful for HiDPI screens. + + DialogEditGroup diff --git a/translations/zh_CN.ts b/translations/zh_CN.ts index d3c918e..13659b8 100644 --- a/translations/zh_CN.ts +++ b/translations/zh_CN.ts @@ -227,6 +227,10 @@ Password 密码 + + Maybe useful for HiDPI screens. + + DialogEditGroup diff --git a/ui/dialog_basic_settings.cpp b/ui/dialog_basic_settings.cpp index b31565d..21b2421 100644 --- a/ui/dialog_basic_settings.cpp +++ b/ui/dialog_basic_settings.cpp @@ -54,6 +54,7 @@ public: DialogBasicSettings::DialogBasicSettings(QWidget *parent) : QDialog(parent), ui(new Ui::DialogBasicSettings) { ui->setupUi(this); + ADD_ASTERISK(this); // Common @@ -142,6 +143,20 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent) mainwindow->repaint(); NekoRay::dataStore->Save(); }); + // + ui->AA_EnableHighDpiScaling->setChecked(ReadFileText("groups/HiDPI").toInt() == 1); + connect(ui->AA_EnableHighDpiScaling, &QCheckBox::clicked, this, [=](bool checked) { + QFile file; + file.setFileName("groups/HiDPI"); + file.open(QIODevice::ReadWrite | QIODevice::Truncate); + if (checked) { + file.write("1"); + } else { + file.write("0"); + } + file.close(); + MessageBoxWarning(tr("Settings changed"), tr("Restart nekoray to take effect.")); + }); // Subscription diff --git a/ui/dialog_basic_settings.ui b/ui/dialog_basic_settings.ui index c0ff10c..6c3a677 100644 --- a/ui/dialog_basic_settings.ui +++ b/ui/dialog_basic_settings.ui @@ -443,7 +443,7 @@ - + @@ -455,23 +455,33 @@ - + + + + 0 + 0 + + + - - - Qt::Horizontal - - - - 0 - 0 - - - + + + + + + Maybe useful for HiDPI screens. + + + Qt::AA_EnableHighDpiScaling + + + + +