remove ghost containments on loading

--ghost containments such as when a user
deletes a dock without notification confirmation
can be removed afterwards when that layout is
loading either at Single or Multiple mode.
pull/2/head
Michail Vourlakos 7 years ago
parent 3462562a81
commit 3bddb99881

@ -1109,15 +1109,19 @@ QString Layout::newUniqueIdsLayoutFromFile(QString file)
KConfigGroup fixedNewContainmets = KConfigGroup(file2Ptr, "Containments");
foreach (auto contId, investigate_conts.groupList()) {
KConfigGroup newContainmentGroup = fixedNewContainmets.group(assigned[contId]);
investigate_conts.group(contId).copyTo(&newContainmentGroup);
QString pluginId = investigate_conts.group(contId).readEntry("plugin", "");
newContainmentGroup.group("Applets").deleteGroup();
if (pluginId != "org.kde.desktopcontainment") { //!dont add ghost containments
KConfigGroup newContainmentGroup = fixedNewContainmets.group(assigned[contId]);
investigate_conts.group(contId).copyTo(&newContainmentGroup);
foreach (auto appId, investigate_conts.group(contId).group("Applets").groupList()) {
KConfigGroup appletGroup = investigate_conts.group(contId).group("Applets").group(appId);
KConfigGroup newAppletGroup = fixedNewContainmets.group(assigned[contId]).group("Applets").group(assigned[appId]);
appletGroup.copyTo(&newAppletGroup);
newContainmentGroup.group("Applets").deleteGroup();
foreach (auto appId, investigate_conts.group(contId).group("Applets").groupList()) {
KConfigGroup appletGroup = investigate_conts.group(contId).group("Applets").group(appId);
KConfigGroup newAppletGroup = fixedNewContainmets.group(assigned[contId]).group("Applets").group(assigned[appId]);
appletGroup.copyTo(&newAppletGroup);
}
}
}

@ -606,7 +606,25 @@ void LayoutManager::cleanupOnStartup(QString path)
actionGroups.group(pId).deleteGroup();
}
KConfigGroup containmentGroups = KConfigGroup(filePtr, "Containments");
QStringList removeContaimentsList;
foreach (auto cId, containmentGroups.groupList()) {
QString pluginId = containmentGroups.group(cId).readEntry("plugin", "");
if (pluginId == "org.kde.desktopcontainment") { //!must remove ghost containments first
removeContaimentsList << cId;
}
}
foreach (auto cId, removeContaimentsList) {
containmentGroups.group(cId).deleteGroup();
}
actionGroups.sync();
containmentGroups.sync();
}

Loading…
Cancel
Save