diff options
Diffstat (limited to 'src/plugins/projectexplorer/projecttreewidget.cpp')
-rw-r--r-- | src/plugins/projectexplorer/projecttreewidget.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index ddf1bdf496..353d50716c 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -152,11 +152,11 @@ public: setDragDropMode(QAbstractItemView::DragDrop); viewport()->setAcceptDrops(true); setDropIndicatorShown(true); - m_context = new IContext(this); - m_context->setContext(Context(ProjectExplorer::Constants::C_PROJECT_TREE)); - m_context->setWidget(this); + auto context = new IContext(this); + context->setContext(Context(ProjectExplorer::Constants::C_PROJECT_TREE)); + context->setWidget(this); - ICore::addContextObject(m_context); + ICore::addContextObject(context); connect(this, &ProjectTreeView::expanded, this, &ProjectTreeView::invalidateSize); @@ -204,12 +204,6 @@ public: NavigationTreeView::setModel(newModel); } - ~ProjectTreeView() override - { - ICore::removeContextObject(m_context); - delete m_context; - } - int sizeHintForColumn(int column) const override { if (m_cachedSize < 0) @@ -220,7 +214,6 @@ public: private: mutable int m_cachedSize = -1; - IContext *m_context; }; /*! @@ -432,6 +425,20 @@ void ProjectTreeWidget::setAutoSynchronization(bool sync) syncFromDocumentManager(); } +void ProjectTreeWidget::expandNodeRecursively(const QModelIndex &index) +{ + const int rc = index.model()->rowCount(index); + for (int i = 0; i < rc; ++i) + expandNodeRecursively(index.model()->index(i, index.column(), index)); + if (rc > 0) + m_view->expand(index); +} + +void ProjectTreeWidget::expandCurrentNodeRecursively() +{ + expandNodeRecursively(m_view->currentIndex()); +} + void ProjectTreeWidget::collapseAll() { m_view->collapseAll(); |