From bcb9d0c3e5f83bbf77112d2fe19a72eaf7c3de71 Mon Sep 17 00:00:00 2001 From: ComixHe Date: Thu, 25 Jan 2024 15:47:17 +0800 Subject: [PATCH] feat: set more scale envs to application Signed-off-by: ComixHe --- src/dbus/applicationservice.cpp | 29 +++++++++++++++++++---------- src/dbus/applicationservice.h | 3 +++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp index 5dc5a42..cb8190d 100644 --- a/src/dbus/applicationservice.cpp +++ b/src/dbus/applicationservice.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -166,23 +167,31 @@ bool ApplicationService::shouldBeShown(const std::unique_ptr &entr return true; } +void ApplicationService::appendScaleFactor(QVariantMap &optionsMap) const noexcept +{ + static QStringList scaleEnvs{"DEEPIN_WINE_SCALE=%1;", "GDK_DPI_SCALE=%1;", "QT_SCALE_FACTOR=%1;", "GDK_SCALE=%1;"}; + QString oldEnv; + + auto factor = scaleFactor(); + if (auto it = optionsMap.find("env"); it != optionsMap.cend()) { + oldEnv = it->value(); + } + + for (const auto &env : scaleEnvs) { + oldEnv.append(env.arg(factor)); + } + + optionsMap.insert("env", oldEnv); +} + QDBusObjectPath ApplicationService::Launch(const QString &action, const QStringList &fields, const QVariantMap &options, const QString &realExec) { QString execStr{}; - bool ok; const auto &supportedActions = actions(); auto optionsMap = options; - QString oldEnv; - auto factor = scaleFactor(); - if (factor != 1.0) { - if (auto it = optionsMap.find("env"); it != optionsMap.cend()) { - oldEnv = it->value(); - } - oldEnv.append(QString{"DEEPIN_WINE_SCALE=%1;"}.arg(factor)); - optionsMap.insert("env", oldEnv); - } + appendScaleFactor(optionsMap); if (!realExec.isNull()) { // we want to replace exec of this applications. if (realExec.isEmpty()) { diff --git a/src/dbus/applicationservice.h b/src/dbus/applicationservice.h index 63f9a29..1159091 100644 --- a/src/dbus/applicationservice.h +++ b/src/dbus/applicationservice.h @@ -23,6 +23,8 @@ #include #include #include +#include +#include double getScaleFactor() noexcept; @@ -135,6 +137,7 @@ public: private Q_SLOTS: void onGlobalScaleFactorChanged() noexcept; + void appendScaleFactor(QVariantMap &optionsMap) const noexcept; public Q_SLOTS: // NOTE: 'realExec' only for internal implementation