diff --git a/src/vdirectorytree.cpp b/src/vdirectorytree.cpp index 61791711..4a7516f7 100644 --- a/src/vdirectorytree.cpp +++ b/src/vdirectorytree.cpp @@ -222,6 +222,7 @@ void VDirectoryTree::updateItemChildren(QTreeWidgetItem *p_item) fillTreeItem(*item, dir->getName(), dir, QIcon(":/resources/icons/dir_item.svg")); updateDirectoryTreeOne(item, 1); } + expandItemTree(item); } // Delete items without corresponding VDirectory @@ -644,3 +645,19 @@ QTreeWidgetItem *VDirectoryTree::expandToVDirectory(const VDirectory *p_director } return NULL; } + +void VDirectoryTree::expandItemTree(QTreeWidgetItem *p_item) +{ + if (!p_item) { + return; + } + VDirectory *dir = getVDirectory(p_item); + int nrChild = p_item->childCount(); + for (int i = 0; i < nrChild; ++i) { + expandItemTree(p_item->child(i)); + } + if (dir->isExpanded()) { + Q_ASSERT(nrChild > 0); + expandItem(p_item); + } +} diff --git a/src/vdirectorytree.h b/src/vdirectorytree.h index 1dfd4b51..d22141a2 100644 --- a/src/vdirectorytree.h +++ b/src/vdirectorytree.h @@ -63,6 +63,8 @@ private: void updateChildren(QTreeWidgetItem *p_item); // Expand/create the directory tree nodes to @p_directory. QTreeWidgetItem *expandToVDirectory(const VDirectory *p_directory); + // Expand the tree under @p_item according to VDirectory.isOpened(). + void expandItemTree(QTreeWidgetItem *p_item); VNote *vnote; QPointer m_notebook;