1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-03-09 16:58:16 +03:00

update layouts activities when activity is removed

This commit is contained in:
Michail Vourlakos 2020-08-31 10:43:37 +03:00
parent a02056b4c8
commit 7c542e6246
2 changed files with 41 additions and 2 deletions

View File

@ -62,6 +62,9 @@ Synchronizer::Synchronizer(QObject *parent)
//! KActivities tracking
connect(m_manager->corona()->activitiesConsumer(), &KActivities::Consumer::activityRemoved,
this, &Synchronizer::onActivityRemoved);
connect(m_manager->corona()->activitiesConsumer(), &KActivities::Consumer::currentActivityChanged,
this, &Synchronizer::onCurrentActivityChanged);
@ -401,7 +404,42 @@ void Synchronizer::addLayout(CentralLayout *layout)
}
}
void Synchronizer::onCurrentActivityChanged(const QString &id)
void Synchronizer::onActivityRemoved(const QString &activityid)
{
if (!m_assignedLayouts.contains(activityid)) {
return;
}
//! remove any other explicit set layouts for the current activity
QStringList explicits = m_assignedLayouts[activityid];
for(auto explicitlayoutname : explicits) {
QString explicitlayoutid = m_layouts.idForName(explicitlayoutname);
m_layouts[explicitlayoutid].activities.removeAll(activityid);
m_manager->setOnActivities(explicitlayoutname, m_layouts[explicitlayoutid].activities);
emit layoutActivitiesChanged(m_layouts[explicitlayoutid]);
}
QStringList freelayoutnames;
if (m_assignedLayouts.contains(Data::Layout::FREEACTIVITIESID)) {
freelayoutnames = m_assignedLayouts[Data::Layout::FREEACTIVITIESID];
}
reloadAssignedLayouts();
for(auto freelayoutname : freelayoutnames) {
//! inform free activities layouts that their activities probably changed
CentralLayout *central = centralLayout(freelayoutname);
if (central) {
emit central->activitiesChanged();
}
}
}
void Synchronizer::onCurrentActivityChanged(const QString &activityid)
{
if (m_manager->memoryUsage() == MemoryUsage::MultipleLayouts) {
updateKWinDisabledBorders();

View File

@ -135,7 +135,8 @@ signals:
void layoutActivitiesChanged(const Data::Layout &layout);
private slots:
void onCurrentActivityChanged(const QString &id);
void onActivityRemoved(const QString &activityid);
void onCurrentActivityChanged(const QString &activityid);
void onLayoutAdded(const QString &layoutpath);
void reloadAssignedLayouts();