From 78c38ab9bf42bfd567ff5f98f4d346fd9e7e69cf Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 10 Nov 2023 20:06:28 +0100 Subject: [PATCH] Core: Inform about active UI scaling related environment variables There are a couple of environment variables which can influence the UI scaling behavior. If any of those is set, now show an info label next to the policy combo box in the Environment/Interface settings. Change-Id: I91619d73bf53761f9cd4d7ae8bbf9b49b2010012 Reviewed-by: Cristian Adam --- src/app/main.cpp | 2 +- src/libs/utils/stylehelper.h | 2 ++ src/plugins/coreplugin/generalsettings.cpp | 21 ++++++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index bedbb5d39c9..b555596f875 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -283,7 +283,7 @@ static void setHighDpiEnvironmentVariable() { if (Utils::StyleHelper::defaultHighDpiScaleFactorRoundingPolicy() == Qt::HighDpiScaleFactorRoundingPolicy::Unset - || qEnvironmentVariableIsSet("QT_SCALE_FACTOR_ROUNDING_POLICY")) + || qEnvironmentVariableIsSet(Utils::StyleHelper::C_QT_SCALE_FACTOR_ROUNDING_POLICY)) return; std::unique_ptr settings(createUserSettings()); diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index ac5e53a4bd4..a7656b3eb3a 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -39,6 +39,8 @@ constexpr char C_SHOW_BORDER[] = "showborder"; constexpr char C_TOP_BORDER[] = "topBorder"; constexpr char C_TOOLBAR_ACTIONWIDGET[] = "toolbar_actionWidget"; +constexpr char C_QT_SCALE_FACTOR_ROUNDING_POLICY[] = "QT_SCALE_FACTOR_ROUNDING_POLICY"; + enum ToolbarStyle { ToolbarStyleCompact, ToolbarStyleRelaxed, diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index 3087b0d8c4b..4f9f8b9fb34 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -146,6 +146,7 @@ GeneralSettingsWidget::GeneralSettingsWidget() int(Policy::RoundPreferFloor)); m_policyComboBox->addItem(Tr::tr("Don't Round"), int(Policy::PassThrough)); m_policyComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); + m_policyComboBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); const Policy userPolicy = ICore::settings()->value(settingsKeyDpiPolicy, @@ -153,7 +154,25 @@ GeneralSettingsWidget::GeneralSettingsWidget() .value(); m_policyComboBox->setCurrentIndex(m_policyComboBox->findData(int(userPolicy))); - form.addRow({Tr::tr("DPI rounding policy:"), m_policyComboBox, st}); + form.addRow({Tr::tr("DPI rounding policy:"), m_policyComboBox}); + static const char *envVars[] = { + StyleHelper::C_QT_SCALE_FACTOR_ROUNDING_POLICY, "QT_ENABLE_HIGHDPI_SCALING", + "QT_FONT_DPI", "QT_SCALE_FACTOR", "QT_SCREEN_SCALE_FACTORS", "QT_USE_PHYSICAL_DPI", + }; + if (anyOf(envVars, qEnvironmentVariableIsSet)) { + QString toolTip = Tr::tr("The following environment variables are set and can " + "influence the UI scaling behavior of %1:") + .arg(QGuiApplication::applicationDisplayName()) + "\n"; + for (auto var : envVars) { + if (qEnvironmentVariableIsSet(var)) + toolTip.append(QLatin1String("\n") + var + "=" + qEnvironmentVariable(var)); + } + auto envVarInfo = new InfoLabel(Tr::tr("Environment influences UI scaling behavior.")); + envVarInfo->setAdditionalToolTip(toolTip); + form.addItem(envVarInfo); + } else { + form.addItem(st); + } } form.addRow({empty, generalSettings().showShortcutsInContextMenus});