From caafbf9430e1957d7f8c47363ef031c6c7972718 Mon Sep 17 00:00:00 2001 From: Andrei Smirnov Date: Thu, 2 Sep 2021 09:09:06 +0300 Subject: [PATCH] Added UI scale factor logic. --- lib/include/DOtherSide/DOtherSide.h | 2 +- lib/src/DOtherSide.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 3b9a45d..838e0cc 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -60,7 +60,7 @@ DOS_API void DOS_CALL dos_qcoreapplication_process_events(DosQEventLoopProcessEv /// \brief Force the event loop to spin and process the given events until no more available or timed out DOS_API void DOS_CALL dos_qcoreapplication_process_events_timed(DosQEventLoopProcessEventFlag flags, int ms); -DOS_API void DOS_CALL dos_qapplication_enable_hdpi(void); +DOS_API void DOS_CALL dos_qapplication_enable_hdpi(const char *uiScaleFilePath); DOS_API void DOS_CALL dos_qapplication_initialize_opengl(void); diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 395bd92..0bb8fe3 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -122,9 +123,16 @@ char *dos_qcoreapplication_application_dir_path() return convert_to_cstring(QCoreApplication::applicationDirPath()); } -void dos_qapplication_enable_hdpi() +void dos_qapplication_enable_hdpi(const char *uiScaleFilePath) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); + + QFile scaleFile(QString::fromUtf8(uiScaleFilePath)); + if (scaleFile.open(QIODevice::ReadOnly)) { + const auto scale = scaleFile.readAll(); + qputenv("QT_SCALE_FACTOR", scale); + } } void dos_qapplication_initialize_opengl()