From b2d91a39740b003f4440e1e7df0a26a43fbb51a4 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Wed, 21 Sep 2016 19:15:02 +0200 Subject: [PATCH] ensure newly created panels have a screen when a panel is created it doesn't have a view immediately, so we have to work around by writing its config instead. we have to force lastScreen of the newly created containment, or it won't have a screen yet at that point, breaking JS code that relies on it NOTE: if we'll allow setting a panel screen from JS, it will have to use the following lines as well --- shell/scripting/scriptengine.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/shell/scripting/scriptengine.cpp b/shell/scripting/scriptengine.cpp index 4ac193a82..6a7e979d4 100644 --- a/shell/scripting/scriptengine.cpp +++ b/shell/scripting/scriptengine.cpp @@ -376,6 +376,13 @@ Containment *ScriptEngine::createContainment(const QString &type, const QString // some defaults c->setFormFactor(Plasma::Types::Horizontal); c->setLocation(Plasma::Types::TopEdge); + //we have to force lastScreen of the newly created containment, + //or it won't have a screen yet at that point, breaking JS code + //that relies on it + //NOTE: if we'll allow setting a panel screen from JS, it will have to use the following lines as well + KConfigGroup cg=c->config(); + cg.writeEntry(QStringLiteral("lastScreen"), 0); + c->restore(cg); } c->updateConstraints(Plasma::Types::AllConstraints | Plasma::Types::StartupCompletedConstraint); c->flushPendingConstraintsEvents();