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
+
+
+
+
+