Add a KSharedConfigPtr for kcminputrc to KWin::Application

Summary:
There are a few places where KWin needs to read values from kcminputrc.
As I need to add yet another one it makes more sense to properly
structure it like in other cases and have only one kcminputrc hold in
the application. This also allows to better mock the config values in
the integration tests.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D5540
icc-effect-5.14.5
Martin Gräßlin 2017-04-19 17:00:02 +02:00
parent a039c2760f
commit 857d8a9c37
11 changed files with 38 additions and 7 deletions

View File

@ -30,3 +30,9 @@ KSharedConfigPtr MockEffectsHandler::config() const
static const KSharedConfigPtr s_config = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig); static const KSharedConfigPtr s_config = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig);
return s_config; return s_config;
} }
KSharedConfigPtr MockEffectsHandler::inputConfig() const
{
static const KSharedConfigPtr s_inputConfig = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig);
return s_inputConfig;
}

View File

@ -261,6 +261,7 @@ public:
void hideOnScreenMessage(OnScreenMessageHideFlags flags = OnScreenMessageHideFlags()) override { Q_UNUSED(flags)} void hideOnScreenMessage(OnScreenMessageHideFlags flags = OnScreenMessageHideFlags()) override { Q_UNUSED(flags)}
KSharedConfigPtr config() const override; KSharedConfigPtr config() const override;
KSharedConfigPtr inputConfig() const override;
private: private:
bool m_animationsSuported = true; bool m_animationsSuported = true;

View File

@ -86,7 +86,7 @@ void Cursor::loadThemeSettings()
void Cursor::loadThemeFromKConfig() void Cursor::loadThemeFromKConfig()
{ {
KConfigGroup mousecfg(KSharedConfig::openConfig("kcminputrc", KConfig::NoGlobals), "Mouse"); KConfigGroup mousecfg(kwinApp()->inputConfig(), "Mouse");
const QString themeName = mousecfg.readEntry("cursorTheme", "default"); const QString themeName = mousecfg.readEntry("cursorTheme", "default");
bool ok = false; bool ok = false;
uint themeSize = mousecfg.readEntry("cursorSize", QString("24")).toUInt(&ok); uint themeSize = mousecfg.readEntry("cursorSize", QString("24")).toUInt(&ok);

View File

@ -1626,6 +1626,11 @@ KSharedConfigPtr EffectsHandlerImpl::config() const
return kwinApp()->config(); return kwinApp()->config();
} }
KSharedConfigPtr EffectsHandlerImpl::inputConfig() const
{
return kwinApp()->inputConfig();
}
//**************************************** //****************************************
// EffectWindowImpl // EffectWindowImpl
//**************************************** //****************************************

View File

@ -242,6 +242,7 @@ public:
void hideOnScreenMessage(OnScreenMessageHideFlags flags = OnScreenMessageHideFlags()) override; void hideOnScreenMessage(OnScreenMessageHideFlags flags = OnScreenMessageHideFlags()) override;
KSharedConfigPtr config() const override; KSharedConfigPtr config() const override;
KSharedConfigPtr inputConfig() const override;
Scene *scene() const { Scene *scene() const {
return m_scene; return m_scene;

View File

@ -283,7 +283,7 @@ void StartupFeedbackEffect::start(const QString& icon)
prepareTextures(iconPixmap); prepareTextures(iconPixmap);
auto readCursorSize = []() -> int { auto readCursorSize = []() -> int {
// read details about the mouse-cursor theme define per default // read details about the mouse-cursor theme define per default
KConfigGroup mousecfg(KSharedConfig::openConfig(QStringLiteral("kcminputrc")), "Mouse"); KConfigGroup mousecfg(effects->inputConfig(), "Mouse");
QString size = mousecfg.readEntry("cursorSize", QString()); QString size = mousecfg.readEntry("cursorSize", QString());
// fetch a reasonable size for the cursor-theme image // fetch a reasonable size for the cursor-theme image

View File

@ -1458,7 +1458,6 @@ InputRedirection::InputRedirection(QObject *parent)
} }
); );
} }
m_inputConfig = KSharedConfig::openConfig(QStringLiteral("kcminputrc"));
} }
#endif #endif
connect(kwinApp(), &Application::workspaceCreated, this, &InputRedirection::setupWorkspace); connect(kwinApp(), &Application::workspaceCreated, this, &InputRedirection::setupWorkspace);
@ -1632,8 +1631,9 @@ void InputRedirection::reconfigure()
{ {
#if HAVE_INPUT #if HAVE_INPUT
if (Application::usesLibinput()) { if (Application::usesLibinput()) {
m_inputConfig->reparseConfiguration(); auto inputConfig = kwinApp()->inputConfig();
const auto config = m_inputConfig->group(QStringLiteral("keyboard")); inputConfig->reparseConfiguration();
const auto config = inputConfig->group(QStringLiteral("keyboard"));
const int delay = config.readEntry("RepeatDelay", 660); const int delay = config.readEntry("RepeatDelay", 660);
const int rate = config.readEntry("RepeatRate", 25); const int rate = config.readEntry("RepeatRate", 25);
const bool enabled = config.readEntry("KeyboardRepeating", 0) == 0; const bool enabled = config.readEntry("KeyboardRepeating", 0) == 0;
@ -1670,7 +1670,7 @@ void InputRedirection::setupLibInput()
waylandServer()->display()->createRelativePointerManager(KWayland::Server::RelativePointerInterfaceVersion::UnstableV1, waylandServer()->display())->create(); waylandServer()->display()->createRelativePointerManager(KWayland::Server::RelativePointerInterfaceVersion::UnstableV1, waylandServer()->display())->create();
} }
conn->setInputConfig(m_inputConfig); conn->setInputConfig(kwinApp()->inputConfig());
conn->updateLEDs(m_keyboard->xkb()->leds()); conn->updateLEDs(m_keyboard->xkb()->leds());
conn->setup(); conn->setup();
connect(m_keyboard, &KeyboardInputRedirection::ledsChanged, conn, &LibInput::Connection::updateLEDs); connect(m_keyboard, &KeyboardInputRedirection::ledsChanged, conn, &LibInput::Connection::updateLEDs);

View File

@ -285,7 +285,6 @@ private:
QVector<InputEventFilter*> m_filters; QVector<InputEventFilter*> m_filters;
QVector<InputEventSpy*> m_spies; QVector<InputEventSpy*> m_spies;
KSharedConfigPtr m_inputConfig;
KWIN_SINGLETON(InputRedirection) KWIN_SINGLETON(InputRedirection)
friend InputRedirection *input(); friend InputRedirection *input();

View File

@ -1306,6 +1306,12 @@ public:
**/ **/
virtual KSharedConfigPtr config() const = 0; virtual KSharedConfigPtr config() const = 0;
/**
* @returns The global input configuration (kcminputrc)
* @since 5.10
**/
virtual KSharedConfigPtr inputConfig() const = 0;
Q_SIGNALS: Q_SIGNALS:
/** /**
* Signal emitted when the current desktop changed. * Signal emitted when the current desktop changed.

View File

@ -105,6 +105,7 @@ Application::Application(Application::OperationMode mode, int &argc, char **argv
, m_configLock(false) , m_configLock(false)
, m_config() , m_config()
, m_kxkbConfig() , m_kxkbConfig()
, m_inputConfig()
, m_operationMode(mode) , m_operationMode(mode)
{ {
qRegisterMetaType<Options::WindowOperation>("Options::WindowOperation"); qRegisterMetaType<Options::WindowOperation>("Options::WindowOperation");
@ -148,6 +149,9 @@ void Application::start()
if (!m_kxkbConfig) { if (!m_kxkbConfig) {
m_kxkbConfig = KSharedConfig::openConfig(QStringLiteral("kxkbrc"), KConfig::NoGlobals); m_kxkbConfig = KSharedConfig::openConfig(QStringLiteral("kxkbrc"), KConfig::NoGlobals);
} }
if (!m_inputConfig) {
m_inputConfig = KSharedConfig::openConfig(QStringLiteral("kcminputrc"), KConfig::NoGlobals);
}
performStartup(); performStartup();
} }

9
main.h
View File

@ -56,6 +56,7 @@ class KWIN_EXPORT Application : public QApplication
Q_PROPERTY(int x11ScreenNumber READ x11ScreenNumber CONSTANT) Q_PROPERTY(int x11ScreenNumber READ x11ScreenNumber CONSTANT)
Q_PROPERTY(KSharedConfigPtr config READ config WRITE setConfig) Q_PROPERTY(KSharedConfigPtr config READ config WRITE setConfig)
Q_PROPERTY(KSharedConfigPtr kxkbConfig READ kxkbConfig WRITE setKxkbConfig) Q_PROPERTY(KSharedConfigPtr kxkbConfig READ kxkbConfig WRITE setKxkbConfig)
Q_PROPERTY(KSharedConfigPtr inputConfig READ inputConfig WRITE setInputConfig)
public: public:
/** /**
* @brief This enum provides the various operation modes of KWin depending on the available * @brief This enum provides the various operation modes of KWin depending on the available
@ -96,6 +97,13 @@ public:
m_kxkbConfig = config; m_kxkbConfig = config;
} }
KSharedConfigPtr inputConfig() const {
return m_inputConfig;
}
void setInputConfig(KSharedConfigPtr config) {
m_inputConfig = config;
}
void start(); void start();
/** /**
* @brief The operation mode used by KWin. * @brief The operation mode used by KWin.
@ -232,6 +240,7 @@ private:
bool m_configLock; bool m_configLock;
KSharedConfigPtr m_config; KSharedConfigPtr m_config;
KSharedConfigPtr m_kxkbConfig; KSharedConfigPtr m_kxkbConfig;
KSharedConfigPtr m_inputConfig;
OperationMode m_operationMode; OperationMode m_operationMode;
xcb_timestamp_t m_x11Time = XCB_TIME_CURRENT_TIME; xcb_timestamp_t m_x11Time = XCB_TIME_CURRENT_TIME;
xcb_window_t m_rootWindow = XCB_WINDOW_NONE; xcb_window_t m_rootWindow = XCB_WINDOW_NONE;