void PlasmoidProtocol::init() { //this should never happen if (m_containment) { return; } Host* h = qobject_cast<Host*>(parent()); QQuickItem* rootItem = h->rootItem(); if (rootItem) { m_systrayApplet = rootItem->property("_plasma_applet").value<Plasma::Applet*>(); } if (!m_systrayApplet) { qWarning() << "Don't have a parent applet, Can't initialize the Plasmoid protocol!!!"; return; } int containmentId = 0; KConfigGroup cg = m_systrayApplet->config(); cg = KConfigGroup(&cg, "Containments"); if (cg.isValid() && cg.groupList().size()) { containmentId = cg.groupList().first().toInt(); } m_containment = new Plasma::Containment(m_systrayApplet, QStringLiteral("null"), containmentId); m_containment->setImmutability(Plasma::Types::Mutable); m_containment->setFormFactor(Plasma::Types::Horizontal); m_containment->setLocation(m_systrayApplet->location()); m_containment->setContainmentActions(QStringLiteral("RightButton;NoModifier"), QStringLiteral("org.kde.contextmenu")); m_containment->init(); emit m_systrayApplet->containment()->corona()->containmentAdded(m_containment); connect(m_systrayApplet, &Plasma::Applet::locationChanged, this, [=]() { m_containment->setLocation(m_systrayApplet->location()); }); m_systrayApplet->setProperty("containment", QVariant::fromValue(m_containment)); restorePlasmoids(); }