From a029f18eebc1610741f1f34ab1e8308cd58a08d1 Mon Sep 17 00:00:00 2001 From: Devin Lin Date: Wed, 5 Mar 2025 11:44:31 -0500 Subject: [PATCH] initialstart: Make scaling option more robust Currently when the app starts, the scaling of all monitors gets changed to a combobox value. This change makes it so that only the primary monitor is affected, and that it only sets the scaling when the user interacts with the combobox. --- initialstart/modules/prepare/package/contents/ui/main.qml | 6 ++++-- initialstart/modules/prepare/prepareutil.cpp | 5 ++++- initialstart/modules/prepare/prepareutil.h | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/initialstart/modules/prepare/package/contents/ui/main.qml b/initialstart/modules/prepare/package/contents/ui/main.qml index f8141f7e..ba6718ea 100644 --- a/initialstart/modules/prepare/package/contents/ui/main.qml +++ b/initialstart/modules/prepare/package/contents/ui/main.qml @@ -118,8 +118,10 @@ InitialStartModule { currentIndex: Prepare.PrepareUtil.scalingOptions.indexOf(Prepare.PrepareUtil.scaling.toString() + "%"); model: Prepare.PrepareUtil.scalingOptions - // remove % suffix - onCurrentValueChanged: Prepare.PrepareUtil.scaling = parseInt(currentValue.substring(0, currentValue.length - 1)); + onActivated: (index) => { + // remove % suffix + Prepare.PrepareUtil.scaling = parseInt(currentValue.substring(0, currentValue.length - 1)); + } } } diff --git a/initialstart/modules/prepare/prepareutil.cpp b/initialstart/modules/prepare/prepareutil.cpp index 04df1208..ce6ca98c 100644 --- a/initialstart/modules/prepare/prepareutil.cpp +++ b/initialstart/modules/prepare/prepareutil.cpp @@ -25,6 +25,7 @@ PrepareUtil::PrepareUtil(QObject *parent) // try to take the primary display's scaling, otherwise use the scaling of any of the displays for (KScreen::OutputPtr output : m_config->outputs()) { scaling = output->scale() * 100; + m_output = output->id(); if (output->isPrimary()) { break; } @@ -53,7 +54,9 @@ void PrepareUtil::setScaling(int scaling) qreal scalingNum = ((double)scaling) / 100; for (KScreen::OutputPtr output : outputs) { - output->setScale(scalingNum); + if (output->id() == m_output) { + output->setScale(scalingNum); + } } auto setop = new KScreen::SetConfigOperation(m_config, this); diff --git a/initialstart/modules/prepare/prepareutil.h b/initialstart/modules/prepare/prepareutil.h index 5b800b72..15260573 100644 --- a/initialstart/modules/prepare/prepareutil.h +++ b/initialstart/modules/prepare/prepareutil.h @@ -36,6 +36,8 @@ private: int m_scaling; bool m_usingDarkTheme; + int m_output{0}; + ColorsSettings *m_colorsSettings; KScreen::ConfigPtr m_config; };