From 4210f6b34c4f48fc4cbeb501086c92f6dd7a72e7 Mon Sep 17 00:00:00 2001 From: Reion Wong Date: Wed, 2 Sep 2026 23:50:07 -0400 Subject: [PATCH] fix(settings-daemon): persist mouse settings --- settings-daemon/mouse/mousemanager.cpp | 38 ++++++++++++++++++++++++++ settings-daemon/mouse/mousemanager.h | 4 +++ 2 files changed, 42 insertions(+) diff --git a/settings-daemon/mouse/mousemanager.cpp b/settings-daemon/mouse/mousemanager.cpp index f55913a..3986ddb 100644 --- a/settings-daemon/mouse/mousemanager.cpp +++ b/settings-daemon/mouse/mousemanager.cpp @@ -5,14 +5,24 @@ #include +namespace +{ +constexpr auto s_leftHandedKey = "leftHanded"; +constexpr auto s_naturalScrollKey = "naturalScroll"; +constexpr auto s_pointerAccelerationKey = "pointerAcceleration"; +constexpr auto s_accelerationProfileKey = "accelerationProfile"; +} + Mouse::Mouse(QObject *parent) : QObject(parent) , m_backend(new KWinInputBackend(KWinInputBackend::DeviceType::Pointer, this)) + , m_settings(QSettings::UserScope, QStringLiteral("cutefishos"), QStringLiteral("mouse")) { new MouseAdaptor(this); QDBusConnection::sessionBus().registerObject(QStringLiteral("/Mouse"), this); connect(m_backend, &KWinInputBackend::devicesChanged, this, [this] { + restoreSettings(); emit availableChanged(); emit leftHandedChanged(); emit accelerationChanged(); @@ -23,6 +33,26 @@ Mouse::Mouse(QObject *parent) Mouse::~Mouse() = default; +void Mouse::restoreSettings() +{ + if (!m_backend->available()) + return; + + const auto restoreBoolean = [this](const QString &property, const char *key) { + if (m_settings.contains(QLatin1String(key))) + m_backend->setBooleanProperty(property, m_settings.value(QLatin1String(key)).toBool()); + }; + + restoreBoolean(QStringLiteral("leftHanded"), s_leftHandedKey); + restoreBoolean(QStringLiteral("naturalScroll"), s_naturalScrollKey); + restoreBoolean(QStringLiteral("pointerAccelerationProfileFlat"), s_accelerationProfileKey); + + if (m_settings.contains(QLatin1String(s_pointerAccelerationKey))) { + m_backend->setRealProperty(QStringLiteral("pointerAcceleration"), + m_settings.value(QLatin1String(s_pointerAccelerationKey)).toReal()); + } +} + bool Mouse::available() const { return m_backend->available(); @@ -37,6 +67,8 @@ void Mouse::setLeftHanded(bool enabled) { if (leftHanded() == enabled) return; + m_settings.setValue(QLatin1String(s_leftHandedKey), enabled); + m_settings.sync(); m_backend->setBooleanProperty(QStringLiteral("leftHanded"), enabled); emit leftHandedChanged(); } @@ -50,6 +82,8 @@ void Mouse::setAcceleration(bool enabled) { if (acceleration() == enabled) return; + m_settings.setValue(QLatin1String(s_accelerationProfileKey), enabled); + m_settings.sync(); m_backend->setBooleanProperty(QStringLiteral("pointerAccelerationProfileFlat"), enabled); m_backend->setBooleanProperty(QStringLiteral("pointerAccelerationProfileAdaptive"), !enabled); emit accelerationChanged(); @@ -64,6 +98,8 @@ void Mouse::setNaturalScroll(bool enabled) { if (naturalScroll() == enabled) return; + m_settings.setValue(QLatin1String(s_naturalScrollKey), enabled); + m_settings.sync(); m_backend->setBooleanProperty(QStringLiteral("naturalScroll"), enabled); emit naturalScrollChanged(); } @@ -78,6 +114,8 @@ void Mouse::setPointerAcceleration(qreal value) value = qBound(-1.0, value, 1.0); if (qFuzzyCompare(1.0 + pointerAcceleration(), 1.0 + value)) return; + m_settings.setValue(QLatin1String(s_pointerAccelerationKey), value); + m_settings.sync(); m_backend->setRealProperty(QStringLiteral("pointerAcceleration"), value); emit pointerAccelerationChanged(); } diff --git a/settings-daemon/mouse/mousemanager.h b/settings-daemon/mouse/mousemanager.h index 66b8e55..0cb14ce 100644 --- a/settings-daemon/mouse/mousemanager.h +++ b/settings-daemon/mouse/mousemanager.h @@ -21,6 +21,7 @@ #define MOUSE_H #include +#include class KWinInputBackend; @@ -58,7 +59,10 @@ signals: void pointerAccelerationChanged(); private: + void restoreSettings(); + KWinInputBackend *m_backend; + QSettings m_settings; }; #endif // MOUSE_H