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 <cristian.adam@qt.io>
This commit is contained in:
Alessandro Portale
2023-11-10 20:06:28 +01:00
parent ab549936f8
commit 78c38ab9bf
3 changed files with 23 additions and 2 deletions

View File

@@ -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<Utils::QtcSettings> settings(createUserSettings());

View File

@@ -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,

View File

@@ -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<Policy>();
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});