diff --git a/src/messaging/IMAPFolder.cpp b/src/messaging/IMAPFolder.cpp index 9ca55fc6..5ae268a2 100644 --- a/src/messaging/IMAPFolder.cpp +++ b/src/messaging/IMAPFolder.cpp @@ -1293,7 +1293,7 @@ void IMAPFolder::rename(const folder::path& newPath) events::folderEvent event(this, events::folderEvent::TYPE_RENAMED, oldPath, newPath); notifyFolder(event); - // Notify folders with the same path + // Notify folders with the same path and sub-folders for (std::list ::iterator it = m_store->m_folders.begin() ; 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); (*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); + } } }