diff --git a/src/kpluginselector.h b/src/kpluginselector.h --- a/src/kpluginselector.h +++ b/src/kpluginselector.h @@ -229,6 +229,12 @@ */ void configCommitted(const QByteArray &componentName); + /** + * Emitted after configuration is changed, tell if configuration represent default or not + * @since 5.67 + */ + void defaulted(bool isDefault); + private: class Private; Private *const d; diff --git a/src/kpluginselector.cpp b/src/kpluginselector.cpp --- a/src/kpluginselector.cpp +++ b/src/kpluginselector.cpp @@ -283,6 +283,8 @@ connect(pluginDelegate, &Private::PluginDelegate::changed, this, &KPluginSelector::changed); connect(pluginDelegate, &Private::PluginDelegate::configCommitted, this, &KPluginSelector::configCommitted); + connect(this, &KPluginSelector::changed, [this]{ emit defaulted(isDefault()); }); + layout->addWidget(d->lineEdit); layout->addWidget(d->listView); layout->addWidget(d->dependenciesWidget); @@ -375,13 +377,15 @@ void KPluginSelector::defaults() { + bool isChanged = false; for (int i = 0; i < d->pluginModel->rowCount(); i++) { const QModelIndex index = d->pluginModel->index(i, 0); PluginEntry *pluginEntry = static_cast(index.internalPointer()); + isChanged |= pluginEntry->pluginInfo.isPluginEnabled() != pluginEntry->pluginInfo.isPluginEnabledByDefault(); d->pluginModel->setData(index, pluginEntry->pluginInfo.isPluginEnabledByDefault(), Qt::CheckStateRole); } - emit changed(true); + emit changed(isChanged); } bool KPluginSelector::isDefault() const @@ -786,9 +790,12 @@ const_cast(index.model())->setData(index, state, Qt::CheckStateRole); } -void KPluginSelector::Private::PluginDelegate::emitChanged() +void KPluginSelector::Private::PluginDelegate::emitChanged(bool state) { - emit changed(true); + const QModelIndex index = focusedIndex(); + PluginEntry *pluginEntry = index.model()->data(index, PluginEntryRole).value(); + + emit changed(pluginEntry->pluginInfo.isPluginEnabled() != state); } void KPluginSelector::Private::PluginDelegate::slotAboutClicked() diff --git a/src/kpluginselector_p.h b/src/kpluginselector_p.h --- a/src/kpluginselector_p.h +++ b/src/kpluginselector_p.h @@ -202,7 +202,7 @@ private Q_SLOTS: void slotStateChanged(bool state); - void emitChanged(); + void emitChanged(bool state); void slotAboutClicked(); void slotConfigureClicked(); void slotDefaultClicked();