From 9575b8c009d5500126cc0edb1a384ab39fd0a641 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Tue, 7 Jun 2016 15:23:13 +0200 Subject: [PATCH] Let Plasma::Corona load the layout on all cases We either load the existing layout or we load a default one. With this, it could be removed from ShellCorona. REVIEW: 127850 --- src/plasma/corona.cpp | 49 +++++++++++++++++++++-------------- src/plasma/corona.h | 1 + src/plasma/private/corona_p.h | 2 ++ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/plasma/corona.cpp b/src/plasma/corona.cpp index 178451693..220bdddba 100644 --- a/src/plasma/corona.cpp +++ b/src/plasma/corona.cpp @@ -178,6 +178,9 @@ void Corona::loadLayout(const QString &configName) KConfigGroup conf(config(), QString()); if (!config()->groupList().isEmpty()) { d->importLayout(conf, false); + } else { + loadDefaultLayout(); + d->notifyContainmentsReady(); } KConfigGroup cg(config(), "General"); @@ -585,30 +588,38 @@ QList CoronaPrivate::importLayout(const KConfigGroup &con } if (!mergeConfig) { - containmentsStarting = 0; - foreach (Containment *containment, containments) { - if (!containment->isUiReady() && containment->screen() < q->numScreens() && containment->screen() >= 0) { - ++containmentsStarting; - QObject::connect(containment, &Plasma::Containment::uiReadyChanged, [=](bool ready) { - if (!ready) { - return; - } - --containmentsStarting; - if (containmentsStarting <= 0) { - emit q->startupCompleted(); - } - }); - } - } - - if (containmentsStarting <= 0) { - emit q->startupCompleted(); - } + notifyContainmentsReady(); } return newContainments; } +void CoronaPrivate::notifyContainmentsReady() +{ + containmentsStarting = 0; + foreach (Containment *containment, containments) { + if (!containment->isUiReady() && containment->screen() < q->numScreens() && containment->screen() >= 0) { + ++containmentsStarting; + QObject::connect(containment, &Plasma::Containment::uiReadyChanged, q, [this](bool ready) { containmentReady(ready); } ); + } + } + + if (containmentsStarting <= 0) { + emit q->startupCompleted(); + } +} + +void CoronaPrivate::containmentReady(bool ready) +{ + if (!ready) { + return; + } + --containmentsStarting; + if (containmentsStarting <= 0) { + emit q->startupCompleted(); + } +} + } // namespace Plasma #include "moc_corona.cpp" diff --git a/src/plasma/corona.h b/src/plasma/corona.h index d8f829ab8..07ad2849b 100644 --- a/src/plasma/corona.h +++ b/src/plasma/corona.h @@ -365,6 +365,7 @@ private: Q_PRIVATE_SLOT(d, void containmentDestroyed(QObject *)) Q_PRIVATE_SLOT(d, void syncConfig()) Q_PRIVATE_SLOT(d, void toggleImmutability()) + Q_PRIVATE_SLOT(d, void containmentReady(bool)) friend class CoronaPrivate; friend class View; diff --git a/src/plasma/private/corona_p.h b/src/plasma/private/corona_p.h index 2ee13a57f..d556baf36 100644 --- a/src/plasma/private/corona_p.h +++ b/src/plasma/private/corona_p.h @@ -45,6 +45,8 @@ public: void updateContainmentImmutability(); void containmentDestroyed(QObject *obj); void syncConfig(); + void notifyContainmentsReady(); + void containmentReady(bool ready); Containment *addContainment(const QString &name, const QVariantList &args, uint id, bool delayedInit = false); QList importLayout(const KConfigGroup &conf, bool mergeConfig);