diff --git a/shell/scripting/scriptengine.cpp b/shell/scripting/scriptengine.cpp --- a/shell/scripting/scriptengine.cpp +++ b/shell/scripting/scriptengine.cpp @@ -171,6 +171,8 @@ m_scriptSelf.setProperty(QStringLiteral("knownWallpaperPlugins"), newFunction(ScriptEngine::V1::knownWallpaperPlugins)); m_scriptSelf.setProperty(QStringLiteral("ConfigFile"), newFunction(ScriptEngine::V1::configFile)); m_scriptSelf.setProperty(QStringLiteral("gridUnit"), ScriptEngine::V1::gridUnit()); + m_scriptSelf.setProperty(QStringLiteral("setImmutability"), newFunction(ScriptEngine::V1::setImmutability)); + m_scriptSelf.setProperty(QStringLiteral("immutability"), newFunction(ScriptEngine::V1::immutability)); setGlobalObject(m_scriptSelf); } diff --git a/shell/scripting/scriptengine_v1.h b/shell/scripting/scriptengine_v1.h --- a/shell/scripting/scriptengine_v1.h +++ b/shell/scripting/scriptengine_v1.h @@ -60,6 +60,8 @@ static QScriptValue gridUnit(); static QScriptValue createContainment(const QString &type, const QString &defautPlugin, QScriptContext *context, QScriptEngine *engine); + static QScriptValue setImmutability(QScriptContext *context, QScriptEngine *engine); + static QScriptValue immutability(QScriptContext *context, QScriptEngine *engine); }; } diff --git a/shell/scripting/scriptengine_v1.cpp b/shell/scripting/scriptengine_v1.cpp --- a/shell/scripting/scriptengine_v1.cpp +++ b/shell/scripting/scriptengine_v1.cpp @@ -922,6 +922,40 @@ return ScriptEngine::gridUnit(); } +QScriptValue ScriptEngine::V1::setImmutability(QScriptContext *context, + QScriptEngine *engine) +{ + if (context->argumentCount() == 0) { + return QScriptValue(); + } + ScriptEngine *env = envFor(engine); + const QString immutability = context->argument(0).toString(); + + if (immutability == QStringLiteral("systemImmutable")) { + env->corona()->setImmutability(Plasma::Types::SystemImmutable); + } else if (immutability == QStringLiteral("userImmutable")) { + env->corona()->setImmutability(Plasma::Types::UserImmutable); + } else { + env->corona()->setImmutability(Plasma::Types::Mutable); + } + + return QScriptValue(); +} + +QScriptValue ScriptEngine::V1::immutability(QScriptContext *context, + QScriptEngine *engine) +{ + ScriptEngine *env = envFor(engine); + switch (env->corona()->immutability()) { + case Plasma::Types::SystemImmutable: + return QStringLiteral("systemImmutable"); + case Plasma::Types::UserImmutable: + return QStringLiteral("userImmutable"); + default: + return QStringLiteral("mutable"); + } +} + QScriptValue ScriptEngine::V1::createContainment(const QString &type, const QString &defaultPlugin, QScriptContext *context, QScriptEngine *engine) {