diff options
author | Vincent Richard <[email protected]> | 2004-12-22 10:01:52 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2004-12-22 10:01:52 +0000 |
commit | 056e22f76f765d65bee0766b387683803860690d (patch) | |
tree | a80faaf58740661ed8a0b4382e961a5a95d752f3 /src/messaging/IMAPFolder.cpp | |
parent | Explain renameParent() in function doc. (diff) | |
download | vmime-056e22f76f765d65bee0766b387683803860690d.tar.gz vmime-056e22f76f765d65bee0766b387683803860690d.zip |
Notify direct and indirect sub-folders when renaming an IMAP folder.
Diffstat (limited to 'src/messaging/IMAPFolder.cpp')
-rw-r--r-- | src/messaging/IMAPFolder.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
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 <IMAPFolder*>::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); + } } } |