diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index 94d8bc6e..99828ea4 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -305,7 +305,7 @@ void GraphController::createDummyGraphForTokenIds(const std::vector& tokenId } addedNodes.insert(id); - dummyNodes.push_back(createDummyNodeTopDown(parent, parent->getId())); + utility::append(dummyNodes, createDummyNodeTopDown(parent)); } ); @@ -368,16 +368,32 @@ void GraphController::createDummyGraphForTokenIdsAndSetActiveAndVisibility( setVisibility(noActive); } -std::shared_ptr GraphController::createDummyNodeTopDown(Node* node, Id parentId) +std::vector> GraphController::createDummyNodeTopDown(Node* node) { + std::vector> nodes; + std::shared_ptr result = std::make_shared(); result->data = node; result->tokenId = node->getId(); result->name = node->getName(); - result->topLevelAncestorId = parentId; + + m_dummyGraphNodes.emplace(result->data->getId(), result); + nodes.push_back(result); + + if (node->isType(Node::NODE_NAMESPACE)) + { + node->forEachChildNode( + [&nodes, this](Node* child) + { + utility::append(nodes, createDummyNodeTopDown(child)); + } + ); + + return nodes; + } node->forEachChildNode( - [node, &parentId, &result, this](Node* child) + [node, &result, this](Node* child) { DummyNode* parent = nullptr; AccessKind accessKind = ACCESS_NONE; @@ -406,13 +422,11 @@ std::shared_ptr GraphController::createDummyNodeTopDown(Node* node, I parent = accessNode.get(); } - parent->subNodes.push_back(createDummyNodeTopDown(child, parentId)); + utility::append(parent->subNodes, createDummyNodeTopDown(child)); } ); - m_dummyGraphNodes.emplace(result->data->getId(), result); - - return result; + return nodes; } std::vector GraphController::getExpandedNodeIds() const diff --git a/src/lib/component/controller/GraphController.h b/src/lib/component/controller/GraphController.h index 3727da93..1e54c18b 100644 --- a/src/lib/component/controller/GraphController.h +++ b/src/lib/component/controller/GraphController.h @@ -68,7 +68,7 @@ private: void createDummyGraphForTokenIds(const std::vector& tokenIds, const std::shared_ptr graph); void createDummyGraphForTokenIdsAndSetActiveAndVisibility( const std::vector& tokenIds, const std::shared_ptr graph); - std::shared_ptr createDummyNodeTopDown(Node* node, Id parentId); + std::vector> createDummyNodeTopDown(Node* node); std::vector getExpandedNodeIds() const; void setExpandedNodeIds(const std::vector& nodeIds); diff --git a/src/lib/data/HierarchyCache.cpp b/src/lib/data/HierarchyCache.cpp index 0c3b88c5..7ba2aacc 100644 --- a/src/lib/data/HierarchyCache.cpp +++ b/src/lib/data/HierarchyCache.cpp @@ -173,7 +173,7 @@ size_t HierarchyCache::getIndexOfLastVisibleParentNode(Id nodeId) const void HierarchyCache::addAllChildIdsForNodeId(Id nodeId, std::set* nodeIds, std::set* edgeIds) const { HierarchyNode* node = getNode(nodeId); - if (node) + if (node && node->isVisible()) { node->addChildIdsRecursive(nodeIds, edgeIds); } @@ -182,7 +182,7 @@ void HierarchyCache::addAllChildIdsForNodeId(Id nodeId, std::set* nodeIds, s void HierarchyCache::addAllVisibleParentsAndChildIdsForNodeId(Id nodeId, std::set* nodeIds, std::set* edgeIds) const { HierarchyNode* node = getNode(nodeId); - if (node) + if (node && node->isVisible()) { node->addChildIds(nodeIds, edgeIds); } diff --git a/src/lib_gui/qt/window/QtMainWindow.h b/src/lib_gui/qt/window/QtMainWindow.h index ad4b6f24..30a5d66e 100644 --- a/src/lib_gui/qt/window/QtMainWindow.h +++ b/src/lib_gui/qt/window/QtMainWindow.h @@ -11,7 +11,6 @@ #include "qt/window/QtWindowStack.h" class QDockWidget; -class QtSettingsWindow; class View; class QtViewToggle