From 395dc9b381b323b071205c064b37fb5fe9930d91 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 21 Mar 2013 19:05:53 +0100 Subject: [PATCH] manage the case a containment behaves as an applet however loading mechanism should be changed to make applets in containments always be an Applet* --- src/plasma/private/containment_p.cpp | 2 -- src/scriptengines/qml/plasmoid/appletinterface.cpp | 2 +- src/scriptengines/qml/plasmoid/appletinterface.h | 2 +- src/scriptengines/qml/plasmoid/containmentinterface.cpp | 7 +++++++ src/scriptengines/qml/plasmoid/containmentinterface.h | 3 ++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plasma/private/containment_p.cpp b/src/plasma/private/containment_p.cpp index 858a7aa58..18c139fe3 100644 --- a/src/plasma/private/containment_p.cpp +++ b/src/plasma/private/containment_p.cpp @@ -262,8 +262,6 @@ Applet *ContainmentPrivate::createApplet(const QString &name, const QVariantList applet->setLaunchErrorMessage(i18n("Could not find requested component: %1", name)); } - //kDebug() << applet->title() << "sizehint:" << applet->sizeHint() << "geometry:" << applet->geometry(); - q->addApplet(applet); return applet; } diff --git a/src/scriptengines/qml/plasmoid/appletinterface.cpp b/src/scriptengines/qml/plasmoid/appletinterface.cpp index 8eac55478..81c4fa5e7 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -138,7 +138,7 @@ void AppletInterface::init() //Create the ToolBox Plasma::Containment *pc = qobject_cast(applet()); - if (pc) { + if (pc && !qobject_cast(pc->parent())) { KConfigGroup defaults; if (pc->containmentType() == Plasma::DesktopContainment) { defaults = KConfigGroup(KSharedConfig::openConfig(pc->corona()->package().filePath("defaults")), "Desktop"); diff --git a/src/scriptengines/qml/plasmoid/appletinterface.h b/src/scriptengines/qml/plasmoid/appletinterface.h index 83cb1a12c..2a501fc8e 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.h +++ b/src/scriptengines/qml/plasmoid/appletinterface.h @@ -233,10 +233,10 @@ Q_SIGNALS: //it's important those slots are private because must not be invokable by qml private Q_SLOTS: - void init(); void configureTriggered(); protected: + virtual void init(); void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); void itemChange(ItemChange change, const ItemChangeData &value); void setConfigurationInterfaceShown(bool show); diff --git a/src/scriptengines/qml/plasmoid/containmentinterface.cpp b/src/scriptengines/qml/plasmoid/containmentinterface.cpp index 7f332b1e4..3ef73f1a4 100644 --- a/src/scriptengines/qml/plasmoid/containmentinterface.cpp +++ b/src/scriptengines/qml/plasmoid/containmentinterface.cpp @@ -46,6 +46,13 @@ ContainmentInterface::ContainmentInterface(DeclarativeAppletScript *parent) qmlRegisterType(); + +} + +void ContainmentInterface::init() +{ + AppletInterface::init(); + connect(containment(), &Plasma::Containment::appletRemoved, this, &ContainmentInterface::appletRemovedForward); connect(containment(), &Plasma::Containment::appletAdded, diff --git a/src/scriptengines/qml/plasmoid/containmentinterface.h b/src/scriptengines/qml/plasmoid/containmentinterface.h index 8243c2f8b..39bd94bb8 100644 --- a/src/scriptengines/qml/plasmoid/containmentinterface.h +++ b/src/scriptengines/qml/plasmoid/containmentinterface.h @@ -51,7 +51,7 @@ public: }; ContainmentInterface(DeclarativeAppletScript *parent); //Not for QML - inline Plasma::Containment *containment() const { return static_cast(m_appletScriptEngine->applet()); } + inline Plasma::Containment *containment() const { return static_cast(m_appletScriptEngine->applet()->containment()); } inline WallpaperInterface *wallpaperInterface() const { return m_wallpaperInterface;} @@ -70,6 +70,7 @@ public: Q_INVOKABLE QVariantList availableScreenRegion(int id) const; protected: + void init(); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);