From 3d55d3e81a2de1b91994473695b2bffa27c47b1b Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Tue, 6 Feb 2024 13:45:31 +0800 Subject: [PATCH 15/16] fix(cursor): incorrect scaling cursor size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 错误的缩放光标大小 --- lib/utils/scaling-helper.cpp | 10 +++++----- lib/utils/scaling-helper.h | 6 +++--- src/lightdm-greeter/main.cpp | 22 +++++++++++++--------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/utils/scaling-helper.cpp b/lib/utils/scaling-helper.cpp index 697744e..fcfd608 100644 --- a/lib/utils/scaling-helper.cpp +++ b/lib/utils/scaling-helper.cpp @@ -23,12 +23,12 @@ namespace Kiran { namespace SessionGuard { -void ScalingHelper::set_scale_factor(double factor) +void ScalingHelper::set_scale_factor(qreal factor) { qputenv("QT_SCALE_FACTOR", QString::number(factor).toUtf8()); } -void ScalingHelper::auto_calculate_screen_scaling() +qreal ScalingHelper::auto_calculate_screen_scaling() { Display *display = nullptr; XRRScreenResources *resources = nullptr; @@ -40,7 +40,7 @@ void ScalingHelper::auto_calculate_screen_scaling() { KLOG_WARNING("auto_calculate_screen_scaling failed,set QT_AUTO_SCREEN_SCALE_FACTOR=1"); qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); - return; + return scale_factor; } resources = XRRGetScreenResourcesCurrent(display, DefaultRootWindow(display)); @@ -59,7 +59,7 @@ void ScalingHelper::auto_calculate_screen_scaling() } KLOG_WARNING("auto_calculate_screen_scaling failed,set QT_AUTO_SCREEN_SCALE_FACTOR=1"); qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); - return; + return scale_factor; } for (int i = 0; i < resources->noutput; i++) @@ -132,7 +132,7 @@ void ScalingHelper::auto_calculate_screen_scaling() KLOG_WARNING() << "set scale factor failed."; } - return; + return scale_factor; } } // namespace SessionGuard diff --git a/lib/utils/scaling-helper.h b/lib/utils/scaling-helper.h index 669fef1..1a3eb9b 100644 --- a/lib/utils/scaling-helper.h +++ b/lib/utils/scaling-helper.h @@ -13,15 +13,15 @@ */ #pragma once - +#include namespace Kiran { namespace SessionGuard { namespace ScalingHelper { -void auto_calculate_screen_scaling(); -void set_scale_factor(double factor); +qreal auto_calculate_screen_scaling(); +void set_scale_factor(qreal factor); } // namespace ScalingHelper } // namespace SessionGuard diff --git a/src/lightdm-greeter/main.cpp b/src/lightdm-greeter/main.cpp index 61255ec..254911a 100644 --- a/src/lightdm-greeter/main.cpp +++ b/src/lightdm-greeter/main.cpp @@ -31,20 +31,22 @@ using namespace ::Kiran::SessionGuard; using namespace ::Kiran::SessionGuard::Greeter; // 根据配置项,调整缩放率 -void adjustScaleFactor(Prefs* prefs) +qreal adjustScaleFactor(Prefs* prefs) { + qreal factor = 1.0; + /// 设置缩放比 switch (prefs->scale_mode()) { case GREETER_SCALING_MODE_AUTO: { - ScalingHelper::auto_calculate_screen_scaling(); + factor = ScalingHelper::auto_calculate_screen_scaling(); break; } case GREETER_SCALING_MODE_MANUAL: { - double scaleFcator = prefs->scale_factor(); - ScalingHelper::set_scale_factor(scaleFcator); + factor = prefs->scale_factor(); + ScalingHelper::set_scale_factor(factor); break; } case GREETER_SCALING_MODE_DISABLE: @@ -53,6 +55,8 @@ void adjustScaleFactor(Prefs* prefs) KLOG_ERROR("enable-scaling: unsupported options %d", prefs->scale_mode()); break; } + + return factor; } // 加载样式表 @@ -91,12 +95,12 @@ bool loadTranslator() } // 设置当前光标缩放,以及Root窗口光标避免开始会话到进入会话之中的空窗期光标错误显示 -void setCursor(Prefs* prefs) +void setCursor(qreal factor) { // 光标放大 - if (!CursorHelper::setDefaultCursorSize(prefs->scale_factor())) + if (!CursorHelper::setDefaultCursorSize(factor)) { - KLOG_ERROR("set default cursor size for factor %d failed!", prefs->scale_factor()); + KLOG_ERROR("set default cursor size for factor %f failed!", factor); } // 登录成功和进入桌面的间隔会显示根窗口,为了避免显示根窗口时光标显示为"X",需设置ROOT窗口光标 @@ -121,12 +125,12 @@ int main(int argc, char* argv[]) Prefs::globalInit(); auto prefs = Prefs::getInstance(); - adjustScaleFactor(prefs); + qreal factor = adjustScaleFactor(prefs); QApplication app(argc, argv); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); - setCursor(prefs); + setCursor(factor); loadTranslator(); loadStyleSheet(); -- 2.27.0