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:
parent
a02056b4c8
commit
7c542e6246
@ -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();
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user