diff --git a/src/vdirectorytree.cpp b/src/vdirectorytree.cpp index 09d292a1..c872bbbb 100644 --- a/src/vdirectorytree.cpp +++ b/src/vdirectorytree.cpp @@ -129,7 +129,26 @@ void VDirectoryTree::updateDirectoryTree() updateDirectoryTreeOne(item, 1); } - setCurrentItem(topLevelItem(0)); + + if (!restoreCurrentItem()) { + setCurrentItem(topLevelItem(0)); + } +} + +bool VDirectoryTree::restoreCurrentItem() +{ + qDebug() << m_notebook << m_notebookCurrentDirMap; + auto it = m_notebookCurrentDirMap.find(m_notebook); + if (it != m_notebookCurrentDirMap.end()) { + bool rootDirectory; + QTreeWidgetItem *item = findVDirectory(it.value(), rootDirectory); + if (item) { + setCurrentItem(item); + return true; + } + } + + return false; } void VDirectoryTree::updateDirectoryTreeOne(QTreeWidgetItem *p_parent, int depth) @@ -401,7 +420,10 @@ void VDirectoryTree::currentDirectoryItemChanged(QTreeWidgetItem *currentItem) emit currentDirectoryChanged(NULL); return; } - emit currentDirectoryChanged(getVDirectory(currentItem)); + + QPointer dir = getVDirectory(currentItem); + m_notebookCurrentDirMap[m_notebook] = dir; + emit currentDirectoryChanged(dir); } void VDirectoryTree::editDirectoryInfo() diff --git a/src/vdirectorytree.h b/src/vdirectorytree.h index 6d93fe51..678aaf9e 100644 --- a/src/vdirectorytree.h +++ b/src/vdirectorytree.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "vdirectory.h" #include "vnotebook.h" #include "vnavigationmode.h" @@ -77,12 +78,15 @@ private: void expandItemTree(QTreeWidgetItem *p_item); QList getVisibleItems() const; QList getVisibleChildItems(const QTreeWidgetItem *p_item) const; + bool restoreCurrentItem(); VNote *vnote; QPointer m_notebook; QVector > m_copiedDirs; VEditArea *m_editArea; + QHash m_notebookCurrentDirMap; + // Actions QAction *newRootDirAct; QAction *newSiblingDirAct;