diff --git a/core/ModuleView.h b/core/ModuleView.h --- a/core/ModuleView.h +++ b/core/ModuleView.h @@ -137,7 +137,6 @@ private Q_SLOTS: void activeModuleChanged( KPageWidgetItem* current, KPageWidgetItem* previous); - void updateButtons(); void stateChanged(); Q_SIGNALS: diff --git a/core/ModuleView.cpp b/core/ModuleView.cpp --- a/core/ModuleView.cpp +++ b/core/ModuleView.cpp @@ -106,7 +106,6 @@ connect( d->mDefault, &QAbstractButton::clicked, this, &ModuleView::moduleDefaults ); connect( d->mPageWidget, SIGNAL(currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)), this, SLOT(activeModuleChanged(KPageWidgetItem*,KPageWidgetItem*)) ); - connect( this, &ModuleView::moduleChanged, this, &ModuleView::updateButtons ); d->mApplyAuthorize = new KAuth::ObjectDecorator(d->mApply); d->mApplyAuthorize->setAuthAction( KAuth::Action() ); @@ -372,8 +371,12 @@ KCModuleProxy * activeModule = d->mPages.value( d->mPageWidget->currentPage() ); KAuth::Action moduleAction; bool change = false; + bool defaulted = false; + KCModule::Buttons buttons = KCModule::NoAdditionalButton; if( activeModule ) { + buttons = activeModule->buttons(); change = activeModule->changed(); + defaulted = activeModule->defaulted(); disconnect( d->mApplyAuthorize, SIGNAL(authorized(KAuth::Action)), this, SLOT(moduleSave()) ); disconnect( d->mApply, SIGNAL(clicked()), this, SLOT(moduleSave()) ); @@ -387,8 +390,10 @@ updatePageIconHeader( d->mPageWidget->currentPage() ); d->mApplyAuthorize->setAuthAction( moduleAction ); - d->mApply->setEnabled( change ); - d->mReset->setEnabled( change ); + d->mDefault->setEnabled( (buttons & KCModule::Default) && !defaulted ); + d->mApply->setEnabled( (buttons & KCModule::Apply) && change ); + d->mReset->setEnabled( (buttons & KCModule::Apply) && change ); + d->mHelp->setEnabled(buttons & KCModule::Help ); emit moduleChanged( change ); } @@ -411,22 +416,6 @@ QWidget::keyPressEvent( event ); } -void ModuleView::updateButtons() -{ - KCModuleProxy * activeModule = d->mPages.value( d->mPageWidget->currentPage() ); - if( !activeModule ) { - return; - } - - const int buttons = activeModule->buttons(); - - d->mApply->setVisible(buttons & KCModule::Apply ); - d->mReset->setVisible(buttons & KCModule::Apply ); - - d->mHelp->setEnabled(buttons & KCModule::Help ); - d->mDefault->setEnabled(buttons & KCModule::Default ); -} - void ModuleView::setFaceType(KPageView::FaceType type) { d->mPageWidget->setFaceType(type);