ui: Show overview bundles for non-indexed or symbol types if no others available

This commit is contained in:
Eberhard Graether
2018-12-16 23:51:53 +01:00
parent 1dabbab599
commit dd4a880ec3
3 changed files with 29 additions and 9 deletions
@@ -1379,6 +1379,8 @@ void GraphController::bundleNodesByType()
std::vector<std::shared_ptr<DummyNode>> oldNodes = std::move(m_dummyNodes);
m_dummyNodes.clear();
bool hasNonFileBundle = false;
for (const NodeType& nodeType : NodeType::getOverviewBundleNodeTypesOrdered())
{
Tree<NodeType::BundleInfo> bundleInfoTree = nodeType.getOverviewBundleTree();
@@ -1388,10 +1390,25 @@ void GraphController::bundleNodesByType()
if (bundleNode)
{
m_dummyNodes.push_back(bundleNode);
if (bundleNode->bundledNodeType.getType() != NodeType::NODE_FILE)
{
hasNonFileBundle = true;
}
}
}
}
if (nodes.size() && !hasNonFileBundle)
{
Tree<NodeType::BundleInfo> bundleInfoTree(NodeType::BundleInfo(L"Symbols"));
std::shared_ptr<DummyNode> bundleNode = bundleByType(nodes, NodeType::NODE_SYMBOL, bundleInfoTree, false);
if (bundleNode)
{
m_dummyNodes.push_back(bundleNode);
}
}
if (nodes.size())
{
LOG_ERROR("Nodes left after bundling for overview");
+10 -7
View File
@@ -920,13 +920,16 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForAll() const
m_sqliteIndexStorage.forEach<StorageNode>(
[&](StorageNode&& node)
{
auto it = m_symbolDefinitionKinds.find(node.id);
if (it != m_symbolDefinitionKinds.end() && it->second == DEFINITION_EXPLICIT &&
(
NodeType(NodeType::intToType(node.type)).isPackage() ||
!m_hierarchyCache.isChildOfVisibleNodeOrInvisible(node.id)
)
){
bool showNode = true;
if (m_symbolDefinitionKinds.size())
{
auto it = m_symbolDefinitionKinds.find(node.id);
showNode = (it != m_symbolDefinitionKinds.end() && it->second == DEFINITION_EXPLICIT);
}
if (showNode && (NodeType(NodeType::intToType(node.type)).isPackage() ||
!m_hierarchyCache.isChildOfVisibleNodeOrInvisible(node.id)))
{
tokenIds.push_back(node.id);
}
}
@@ -41,8 +41,8 @@ void QtGraphNodeBundle::onClick()
{
MessageGraphNodeBundleSplit(
m_tokenId,
!m_type.isUnknownSymbol() && getName() != L"Anonymous Namespaces", // TODO: move to language package
!m_type.isUnknownSymbol()
(!m_type.isUnknownSymbol() || getName() == L"Symbols") && getName() != L"Anonymous Namespaces", // TODO: move to language package
!m_type.isUnknownSymbol() || getName() == L"Symbols"
).dispatch();
}