diff --git a/kgreeter/kcm/kgreeterconfig.cpp b/kgreeter/kcm/kgreeterconfig.cpp index 510eb5fb..cbca1eca 100644 --- a/kgreeter/kcm/kgreeterconfig.cpp +++ b/kgreeter/kcm/kgreeterconfig.cpp @@ -42,7 +42,8 @@ K_EXPORT_PLUGIN(KCMGreeterFactory("kcmgreeterconfig", "kcm_greeterconfig")) KCMGreeter::KCMGreeter(QWidget* parent, const QVariantList& args) : KCModule(KCMGreeterFactory::componentData(), parent), m_lightdmexe(KStandardDirs::findRootExe("lightdm")), - m_lightdmproc(nullptr) + m_lightdmproc(nullptr), + m_changed(false) { Q_UNUSED(args); @@ -65,6 +66,8 @@ KCMGreeter::KCMGreeter(QWidget* parent, const QVariantList& args) setDisabled(true); } + connect(this, SIGNAL(changed(bool)), this, SLOT(slotChanged(bool))); + load(); connect(fontchooser, SIGNAL(fontSelected(QFont)), this, SLOT(slotFontChanged(QFont))); @@ -248,6 +251,7 @@ void KCMGreeter::slotTest() void KCMGreeter::slotProcessStateChanged(QProcess::ProcessState state) { setProcessRunning(state == QProcess::Running); + enableTest(!m_changed); } void KCMGreeter::slotProcessFinished(const int exitcode) @@ -257,6 +261,11 @@ void KCMGreeter::slotProcessFinished(const int exitcode) } } +void KCMGreeter::slotChanged(bool state) +{ + m_changed = state; +} + void KCMGreeter::loadSettings(const QString &font, const QString &style, const QString &color, const QString &cursor, const QString &background, const QString &rectangle) { @@ -303,7 +312,7 @@ void KCMGreeter::enableTest(const bool enable) if (enable) { testbutton->setEnabled(!m_lightdmexe.isEmpty()); } else { - testbutton->setEnabled(false); + testbutton->setEnabled(m_lightdmproc->state() == QProcess::Running); } } diff --git a/kgreeter/kcm/kgreeterconfig.h b/kgreeter/kcm/kgreeterconfig.h index 0aaa723f..2a3a4f01 100644 --- a/kgreeter/kcm/kgreeterconfig.h +++ b/kgreeter/kcm/kgreeterconfig.h @@ -55,6 +55,8 @@ private Q_SLOTS: void slotProcessStateChanged(QProcess::ProcessState state); void slotProcessFinished(const int exitcode); + void slotChanged(bool state); + private: void loadSettings(const QString &font, const QString &style, const QString &color, const QString &cursor, const QString &background, const QString &rectangle); @@ -64,6 +66,7 @@ private: QString m_lightdmexe; QProcess* m_lightdmproc; + bool m_changed; }; #endif // KGREETERCONFIG_H