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);
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)}
KSharedConfigPtr config() const override;
KSharedConfigPtr inputConfig() const override;
private:
bool m_animationsSuported = true;

View File

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

View File

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

View File

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

View File

@ -283,7 +283,7 @@ void StartupFeedbackEffect::start(const QString& icon)
prepareTextures(iconPixmap);
auto readCursorSize = []() -> int {
// 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());
// 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
connect(kwinApp(), &Application::workspaceCreated, this, &InputRedirection::setupWorkspace);
@ -1632,8 +1631,9 @@ void InputRedirection::reconfigure()
{
#if HAVE_INPUT
if (Application::usesLibinput()) {
m_inputConfig->reparseConfiguration();
const auto config = m_inputConfig->group(QStringLiteral("keyboard"));
auto inputConfig = kwinApp()->inputConfig();
inputConfig->reparseConfiguration();
const auto config = inputConfig->group(QStringLiteral("keyboard"));
const int delay = config.readEntry("RepeatDelay", 660);
const int rate = config.readEntry("RepeatRate", 25);
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();
}
conn->setInputConfig(m_inputConfig);
conn->setInputConfig(kwinApp()->inputConfig());
conn->updateLEDs(m_keyboard->xkb()->leds());
conn->setup();
connect(m_keyboard, &KeyboardInputRedirection::ledsChanged, conn, &LibInput::Connection::updateLEDs);

View File

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

View File

@ -1306,6 +1306,12 @@ public:
**/
virtual KSharedConfigPtr config() const = 0;
/**
* @returns The global input configuration (kcminputrc)
* @since 5.10
**/
virtual KSharedConfigPtr inputConfig() const = 0;
Q_SIGNALS:
/**
* 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_config()
, m_kxkbConfig()
, m_inputConfig()
, m_operationMode(mode)
{
qRegisterMetaType<Options::WindowOperation>("Options::WindowOperation");
@ -148,6 +149,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();
}

9
main.h
View File

@ -56,6 +56,7 @@ class KWIN_EXPORT Application : public QApplication
Q_PROPERTY(int x11ScreenNumber READ x11ScreenNumber CONSTANT)
Q_PROPERTY(KSharedConfigPtr config READ config WRITE setConfig)
Q_PROPERTY(KSharedConfigPtr kxkbConfig READ kxkbConfig WRITE setKxkbConfig)
Q_PROPERTY(KSharedConfigPtr inputConfig READ inputConfig WRITE setInputConfig)
public:
/**
* @brief This enum provides the various operation modes of KWin depending on the available
@ -96,6 +97,13 @@ public:
m_kxkbConfig = config;
}
KSharedConfigPtr inputConfig() const {
return m_inputConfig;
}
void setInputConfig(KSharedConfigPtr config) {
m_inputConfig = config;
}
void start();
/**
* @brief The operation mode used by KWin.
@ -232,6 +240,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;