diff --git a/useractions.cpp b/useractions.cpp index 7e9eda1b8c..759ef01655 100644 --- a/useractions.cpp +++ b/useractions.cpp @@ -69,7 +69,8 @@ QPopupMenu* Workspace::clientPopup() popup->insertSeparator(); - if (!KGlobal::config()->isImmutable()) + if (!KGlobal::config()->isImmutable() && + !kapp->authorizeControlModules(Workspace::configModules(true)).isEmpty()) { popup->insertItem(SmallIconSet( "configure" ), i18n("Configur&e Window Behavior..."), this, SLOT( configureWM() )); popup->insertSeparator(); diff --git a/workspace.cpp b/workspace.cpp index 7689705754..65221c8b9c 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -844,11 +844,20 @@ void Workspace::saveDesktopSettings() } } -void Workspace::configureWM() +QStringList Workspace::configModules(bool controlCenter) { QStringList args; - args << "kwindecoration" << "kwinactions" << "kwinfocus" << "kwinmoving" << "kwinadvanced"; - KApplication::kdeinitExec( "kcmshell", args ); + args << "kde-kwindecoration.desktop"; + if (controlCenter) + args << "kde-kwinoptions.desktop"; + else if (kapp->authorizeControlModule("kde-kwinoptions.desktop")) + args << "kwinactions" << "kwinfocus" << "kwinmoving" << "kwinadvanced"; + return args; + } + +void Workspace::configureWM() + { + KApplication::kdeinitExec( "kcmshell", configModules(false) ); } /*! diff --git a/workspace.h b/workspace.h index 2d86834722..c52ffbfa26 100644 --- a/workspace.h +++ b/workspace.h @@ -238,6 +238,8 @@ class Workspace : public QObject, public KWinInterface, public KDecorationDefine int packPositionUp( const Client* cl, int oldy, bool top_edge ) const; int packPositionDown( const Client* cl, int oldy, bool bottom_edge ) const; + static QStringList configModules(bool controlCenter); + public slots: void refresh(); // keybindings