diff --git a/autotests/integration/keyboard_layout_test.cpp b/autotests/integration/keyboard_layout_test.cpp index 4448502c95..6b832b0010 100644 --- a/autotests/integration/keyboard_layout_test.cpp +++ b/autotests/integration/keyboard_layout_test.cpp @@ -139,6 +139,7 @@ void KeyboardLayoutTest::initTestCase() kwinApp()->setConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)); kwinApp()->setKxkbConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)); + kwinApp()->setInputConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)); layoutGroup = kwinApp()->kxkbConfig()->group("Layout"); layoutGroup.deleteGroup(); @@ -531,7 +532,7 @@ void KeyboardLayoutTest::testNumLock() QVERIFY(!xkb->leds().testFlag(LED::NumLock)); // let's reconfigure to enable through config - auto group = InputConfig::self()->inputConfig()->group("Keyboard"); + auto group = kwinApp()->inputConfig()->group("Keyboard"); group.writeEntry("NumLock", 0); group.sync(); xkb->reconfigure(); diff --git a/src/cursor.cpp b/src/cursor.cpp index fa3ef41664..9c30b560cc 100644 --- a/src/cursor.cpp +++ b/src/cursor.cpp @@ -142,7 +142,7 @@ void Cursor::loadThemeSettings() void Cursor::loadThemeFromKConfig() { - KConfigGroup mousecfg(InputConfig::self()->inputConfig(), "Mouse"); + KConfigGroup mousecfg(kwinApp()->inputConfig(), "Mouse"); const QString themeName = mousecfg.readEntry("cursorTheme", defaultThemeName()); const uint themeSize = mousecfg.readEntry("cursorSize", defaultThemeSize()); updateTheme(themeName, themeSize); @@ -160,9 +160,8 @@ void Cursor::updateTheme(const QString &name, int size) void Cursor::slotKGlobalSettingsNotifyChange(int type, int arg) { - // #endif if (type == 5 /*CursorChanged*/) { - InputConfig::self()->inputConfig()->reparseConfiguration(); + kwinApp()->inputConfig()->reparseConfiguration(); loadThemeFromKConfig(); } } @@ -697,18 +696,4 @@ void Cursor::setSource(CursorSource *source) Q_EMIT cursorChanged(); } -InputConfig *InputConfig::s_self = nullptr; -InputConfig *InputConfig::self() -{ - if (!s_self) { - s_self = new InputConfig; - } - return s_self; -} - -InputConfig::InputConfig() - : m_inputConfig(KSharedConfig::openConfig(QStringLiteral("kcminputrc"), KConfig::NoGlobals)) -{ -} - } // namespace diff --git a/src/cursor.h b/src/cursor.h index a2de789495..507ccd4ccc 100644 --- a/src/cursor.h +++ b/src/cursor.h @@ -308,27 +308,6 @@ private: int m_cursorHideCounter = 0; }; -class KWIN_EXPORT InputConfig -{ -public: - KSharedConfigPtr inputConfig() const - { - return m_inputConfig; - } - void setInputConfig(KSharedConfigPtr config) - { - m_inputConfig = std::move(config); - } - - static InputConfig *self(); - -private: - InputConfig(); - - KSharedConfigPtr m_inputConfig; - static InputConfig *s_self; -}; - inline const QPointF &Cursor::currentPos() const { return m_pos; diff --git a/src/effects.cpp b/src/effects.cpp index eeddf98e25..099cc476db 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -1582,7 +1582,7 @@ KSharedConfigPtr EffectsHandlerImpl::config() const KSharedConfigPtr EffectsHandlerImpl::inputConfig() const { - return InputConfig::self()->inputConfig(); + return kwinApp()->inputConfig(); } Effect *EffectsHandlerImpl::findEffect(const QString &name) const diff --git a/src/input.cpp b/src/input.cpp index 5afcea64b6..9ee2faaf6a 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -2640,7 +2640,7 @@ void InputRedirection::uninstallInputEventSpy(InputEventSpy *spy) void InputRedirection::init() { - m_inputConfigWatcher = KConfigWatcher::create(InputConfig::self()->inputConfig()); + m_inputConfigWatcher = KConfigWatcher::create(kwinApp()->inputConfig()); connect(m_inputConfigWatcher.data(), &KConfigWatcher::configChanged, this, &InputRedirection::handleInputConfigChanged); @@ -3066,7 +3066,7 @@ void InputRedirection::addInputBackend(std::unique_ptr &&inputBack connect(inputBackend.get(), &InputBackend::deviceAdded, this, &InputRedirection::addInputDevice); connect(inputBackend.get(), &InputBackend::deviceRemoved, this, &InputRedirection::removeInputDevice); - inputBackend->setConfig(InputConfig::self()->inputConfig()); + inputBackend->setConfig(kwinApp()->inputConfig()); inputBackend->initialize(); m_inputBackends.push_back(std::move(inputBackend)); diff --git a/src/keyboard_input.cpp b/src/keyboard_input.cpp index cd15c5070a..0bef888a23 100644 --- a/src/keyboard_input.cpp +++ b/src/keyboard_input.cpp @@ -117,7 +117,7 @@ void KeyboardInputRedirection::init() Q_ASSERT(!m_inited); m_inited = true; const auto config = kwinApp()->kxkbConfig(); - m_xkb->setNumLockConfig(InputConfig::self()->inputConfig()); + m_xkb->setNumLockConfig(kwinApp()->inputConfig()); m_xkb->setConfig(config); // Workaround for QTBUG-54371: if there is no real keyboard Qt doesn't request virtual keyboard @@ -171,7 +171,7 @@ void KeyboardInputRedirection::reconfigure() return; } if (waylandServer()->seat()->keyboard()) { - const auto config = InputConfig::self()->inputConfig()->group(QStringLiteral("Keyboard")); + const auto config = kwinApp()->inputConfig()->group(QStringLiteral("Keyboard")); const int delay = config.readEntry("RepeatDelay", 660); const int rate = std::ceil(config.readEntry("RepeatRate", 25.0)); const QString repeatMode = config.readEntry("KeyRepeat", "repeat"); diff --git a/src/main.cpp b/src/main.cpp index 528d836f6f..d6b161913a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,6 +128,9 @@ void Application::start() if (!m_kxkbConfig) { m_kxkbConfig = KSharedConfig::openConfig(QStringLiteral("kxkbrc"), KConfig::NoGlobals); } + if (!m_inputConfig) { + m_inputConfig = KSharedConfig::openConfig(QStringLiteral("kcminputrc"), KConfig::NoGlobals); + } performStartup(); } diff --git a/src/main.h b/src/main.h index b612b756eb..fbc2058869 100644 --- a/src/main.h +++ b/src/main.h @@ -116,6 +116,15 @@ public: m_kxkbConfig = std::move(config); } + KSharedConfigPtr inputConfig() const + { + return m_inputConfig; + } + void setInputConfig(KSharedConfigPtr config) + { + m_inputConfig = std::move(config); + } + void start(); /** * @brief The operation mode used by KWin. @@ -354,6 +363,7 @@ private: bool m_configLock; KSharedConfigPtr m_config; KSharedConfigPtr m_kxkbConfig; + KSharedConfigPtr m_inputConfig; OperationMode m_operationMode; xcb_timestamp_t m_x11Time = XCB_TIME_CURRENT_TIME; xcb_window_t m_rootWindow = XCB_WINDOW_NONE;