ui: Show overview bundles for non-indexed or symbol types if no others available
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user