summaryrefslogtreecommitdiff
path: root/source/kde/kdebase-workspace/kcmshell_root_privilege.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kdebase-workspace/kcmshell_root_privilege.patch')
-rw-r--r--source/kde/kdebase-workspace/kcmshell_root_privilege.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/source/kde/kdebase-workspace/kcmshell_root_privilege.patch b/source/kde/kdebase-workspace/kcmshell_root_privilege.patch
new file mode 100644
index 00000000..f81a98ed
--- /dev/null
+++ b/source/kde/kdebase-workspace/kcmshell_root_privilege.patch
@@ -0,0 +1,43 @@
+--- kdebase-workspace-4.3.85/systemsettings/core/ModuleView.cpp~ 2009-12-11 00:14:03.000000000 +0100
++++ kdebase-workspace-4.3.85/systemsettings/core/ModuleView.cpp 2009-12-22 15:47:35.000000000 +0100
+@@ -40,6 +40,7 @@
+ #include <KCModuleProxy>
+ #include <KStandardGuiItem>
+ #include <KDialogButtonBox>
++#include <KStandardDirs>
+ #include <kauthaction.h>
+
+ #include "MenuItem.h"
+@@ -129,6 +130,32 @@
+ return;
+ }
+
++ if ( menuItem->service()->property( "X-KDE-RootOnly", QVariant::Bool ).toBool() ) {
++ QString kdesu = KStandardDirs::findExe( "kdesu" );
++ QString cmd = menuItem->service()->exec().trimmed();
++
++ /* Prepare the process to run the kcmshell */
++ if ( cmd.left(5) == "kdesu" )
++ {
++ cmd = cmd.remove(0,5).trimmed();
++
++ /* Remove all kdesu switches */
++ while ( cmd.length() > 1 && cmd[ 0 ] == '-' )
++ cmd = cmd.remove( 0, cmd.indexOf( ' ' ) ).trimmed();
++ }
++
++ if ( cmd.left(9) == "kcmshell4" )
++ cmd = cmd.remove(0,9).trimmed();
++
++ QStringList args;
++ args << "-i" << QString( menuItem->service()->icon() ) << "-c" << QString( "%1 %2 --lang %3" ).arg( KStandardDirs::locate("exe", "kcmshell4") ).arg( cmd ).arg( KGlobal::locale()->language() );
++
++ kDebug() << "Starting root module: " << args;
++ QProcess::startDetached( kdesu, args );
++
++ return;
++ }
++
+ QList<KCModuleInfo*> modules;
+ if ( menuItem->children().empty() ) {
+ modules << &menuItem->item();