SVN commit 1121620 by bcooksley: Don't load modules to check for KAuth status until module is shown. Ensure that module changing signals are disabled when closing modules. BUG: 235089 M +14 -5 core/ModuleView.cpp M +1 -1 core/ModuleView.h M +0 -1 icons/IconMode.cpp --- trunk/KDE/kdebase/workspace/systemsettings/core/ModuleView.cpp #1121619:1121620 @@ -56,6 +56,7 @@ KPushButton* mReset; KPushButton* mDefault; KPushButton* mHelp; + bool pageChangeSupressed; }; ModuleView::ModuleView( QWidget * parent ) @@ -183,12 +184,12 @@ } d->mModules.insert( page, module ); - updatePageIconHeader( page ); + updatePageIconHeader( page, true ); // Add the new page d->mPageWidget->addPage( page ); } -void ModuleView::updatePageIconHeader( KPageWidgetItem * page ) +void ModuleView::updatePageIconHeader( KPageWidgetItem * page, bool light ) { if( !page ) { // Page is invalid. Probably means we have a race condition during closure of everyone so do nothing @@ -198,12 +199,15 @@ KCModuleProxy * moduleProxy = d->mPages.value( page ); KCModuleInfo * moduleInfo = d->mModules.value( page ); + page->setHeader( moduleInfo->comment() ); + page->setIcon( KIcon( moduleInfo->icon() ) ); + if( light ) { + return; + } + if( moduleProxy && moduleProxy->realModule()->useRootOnlyMessage() ) { page->setHeader( "" + moduleInfo->comment() + "
" + moduleProxy->rootOnlyMessage() + "" ); page->setIcon( KIcon( moduleInfo->icon(), 0, QStringList() << "dialog-warning" ) ); - } else { - page->setHeader( moduleInfo->comment() ); - page->setIcon( KIcon( moduleInfo->icon() ) ); } } @@ -250,6 +254,7 @@ void ModuleView::closeModules() { + d->pageChangeSupressed = true; QMap::iterator page = d->mModules.begin(); QMap::iterator pageEnd = d->mModules.end(); for ( ; page != pageEnd; ++page ) { @@ -258,6 +263,7 @@ d->mPages.clear(); d->mModules.clear(); + d->pageChangeSupressed = false; } bool ModuleView::moduleSave() @@ -316,6 +322,9 @@ d->mPageWidget->setCurrentPage(current); } d->mPageWidget->blockSignals(false); + if( d->pageChangeSupressed ) { + return; + } // We need to get the state of the now active module stateChanged(); } --- trunk/KDE/kdebase/workspace/systemsettings/core/ModuleView.h #1121619:1121620 @@ -128,7 +128,7 @@ bool resolveChanges( KCModuleProxy *currentProxy ); void addModule( KCModuleInfo *module ); bool moduleSave( KCModuleProxy *module ); - void updatePageIconHeader( KPageWidgetItem * page ); + void updatePageIconHeader( KPageWidgetItem * page, bool light = false ); private Q_SLOTS: void activeModuleChanged( KPageWidgetItem* current, KPageWidgetItem* previous); --- trunk/KDE/kdebase/workspace/systemsettings/icons/IconMode.cpp #1121619:1121620 @@ -146,7 +146,6 @@ if( d->moduleView->resolveChanges() ) { d->mainWidget->setCurrentWidget( d->categoryView ); d->moduleView->closeModules(); - d->mainWidget->setCurrentWidget( d->categoryView ); d->backAction->setEnabled( false ); emit changeToolBarItems( BaseMode::Search | BaseMode::Configure | BaseMode::Quit ); emit viewChanged( false );