diff --git a/components/keyboardlayout/keyboardlayout.cpp b/components/keyboardlayout/keyboardlayout.cpp index 51dcd31b6..b8139b094 100644 --- a/components/keyboardlayout/keyboardlayout.cpp +++ b/components/keyboardlayout/keyboardlayout.cpp @@ -43,7 +43,7 @@ KeyboardLayout::KeyboardLayout(QObject* parent) } connect(mIface, &OrgKdeKeyboardLayoutsInterface::currentLayoutChanged, - this, &KeyboardLayout::setCurrentLayout); + this, &KeyboardLayout::onCurrentLayoutChanged); connect(mIface, &OrgKdeKeyboardLayoutsInterface::layoutListChanged, this, &KeyboardLayout::requestLayoutsList); @@ -136,24 +136,32 @@ QString KeyboardLayout::currentLayout() const return mCurrentLayout; } -void KeyboardLayout::setCurrentLayout(const QString &layout) +bool KeyboardLayout::onCurrentLayoutChanged(const QString &layout) { if (!mIface) { - return; + return false; } if (mCurrentLayout == layout) { - return; + return false; } if (!mLayouts.contains(layout)) { qCWarning(KEYBOARD_LAYOUT) << "No such layout" << layout; - return; + return false; } mCurrentLayout = layout; requestCurrentLayoutDisplayName(); - mIface->setLayout(layout); Q_EMIT currentLayoutChanged(layout); + + return true; +} + +void KeyboardLayout::setCurrentLayout(const QString &layout) +{ + if (onCurrentLayoutChanged(layout)) { + mIface->setLayout(layout); + } } diff --git a/components/keyboardlayout/keyboardlayout.h b/components/keyboardlayout/keyboardlayout.h index ec1582c0d..02d67d9be 100644 --- a/components/keyboardlayout/keyboardlayout.h +++ b/components/keyboardlayout/keyboardlayout.h @@ -64,6 +64,7 @@ private Q_SLOTS: void requestCurrentLayoutDisplayName(); void requestLayoutsList(); + bool onCurrentLayoutChanged(const QString &newLayout); void onCurrentLayoutReceived(QDBusPendingCallWatcher *watcher); void onCurrentLayoutDisplayNameReceived(QDBusPendingCallWatcher *watcher); void onLayoutsListReceived(QDBusPendingCallWatcher *watcher);