Notify direct and indirect sub-folders when renaming an IMAP folder.

This commit is contained in:
Vincent Richard 2004-12-22 10:01:52 +00:00
parent 348846413d
commit 056e22f76f

View File

@ -1293,7 +1293,7 @@ void IMAPFolder::rename(const folder::path& newPath)
events::folderEvent event(this, events::folderEvent::TYPE_RENAMED, oldPath, newPath); events::folderEvent event(this, events::folderEvent::TYPE_RENAMED, oldPath, newPath);
notifyFolder(event); notifyFolder(event);
// Notify folders with the same path // Notify folders with the same path and sub-folders
for (std::list <IMAPFolder*>::iterator it = m_store->m_folders.begin() ; for (std::list <IMAPFolder*>::iterator it = m_store->m_folders.begin() ;
it != m_store->m_folders.end() ; ++it) it != m_store->m_folders.end() ; ++it)
{ {
@ -1305,6 +1305,15 @@ void IMAPFolder::rename(const folder::path& newPath)
events::folderEvent event(*it, events::folderEvent::TYPE_RENAMED, oldPath, newPath); events::folderEvent event(*it, events::folderEvent::TYPE_RENAMED, oldPath, newPath);
(*it)->notifyFolder(event); (*it)->notifyFolder(event);
} }
else if ((*it) != this && oldPath.isParentOf((*it)->getFullPath()))
{
folder::path oldPath((*it)->m_path);
(*it)->m_path.renameParent(oldPath, newPath);
events::folderEvent event(*it, events::folderEvent::TYPE_RENAMED, oldPath, (*it)->m_path);
(*it)->notifyFolder(event);
}
} }
} }