From df084b1783749cdfba1ad3a96faeda0acf60e928 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 7 Jan 2017 15:27:26 +0200 Subject: [PATCH] fix #13,corona should load layout a bit later --corona should load its layout after the activities consumer is ready. Otherwise all the functionality concerning activities may not work correctly on its first initialization --- app/CMakeLists.txt | 2 ++ app/dockcorona.cpp | 15 +++++++++++++-- app/dockcorona.h | 10 +++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 39480a3ab..998bc8ed8 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,5 +1,6 @@ find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Qml) find_package(KF5I18n NO_MODULE) +find_package(KF5Activities REQUIRED) include(KDEInstallDirs) include(KDECMakeSettings) @@ -45,6 +46,7 @@ target_link_libraries( KF5::XmlGui KF5::Plasma KF5::PlasmaQuick + KF5::Activities KF5::QuickAddons KF5::WindowSystem KF5::IconThemes diff --git a/app/dockcorona.cpp b/app/dockcorona.cpp index 012ead881..d9e56c0ba 100644 --- a/app/dockcorona.cpp +++ b/app/dockcorona.cpp @@ -35,10 +35,13 @@ #include #include +#include + namespace Latte { DockCorona::DockCorona(QObject *parent) - : Plasma::Corona(parent) + : Plasma::Corona(parent), + m_activityConsumer(new KActivities::Consumer(this)) { KPackage::Package package(new DockPackage(this)); @@ -56,7 +59,7 @@ DockCorona::DockCorona(QObject *parent) connect(this, &Corona::containmentAdded, this, &DockCorona::addDock); - loadLayout(); + connect(m_activityConsumer, &KActivities::Consumer::serviceStatusChanged, this, &DockCorona::load); } DockCorona::~DockCorona() @@ -69,9 +72,17 @@ DockCorona::~DockCorona() qDeleteAll(m_dockViews); m_dockViews.clear(); + disconnect(m_activityConsumer, &KActivities::Consumer::serviceStatusChanged, this, &DockCorona::load); + delete m_activityConsumer; + qDebug() << "deleted" << this; } +void DockCorona::load() +{ + loadLayout(); +} + int DockCorona::numScreens() const { return qGuiApp->screens().count(); diff --git a/app/dockcorona.h b/app/dockcorona.h index d56a9c1de..0ac26f691 100644 --- a/app/dockcorona.h +++ b/app/dockcorona.h @@ -31,6 +31,10 @@ class Containment; class Types; } +namespace KActivities { +class Consumer; +} + namespace Latte { class DockCorona : public Plasma::Corona { @@ -62,12 +66,16 @@ signals: void configurationShown(PlasmaQuick::ConfigView *configView); void containmentsNoChanged(); +private slots: + void load(); + private: void qmlRegisterTypes() const; int primaryScreenId() const; - //std::vector m_containments; QHash m_dockViews; + + KActivities::Consumer *m_activityConsumer; }; }