From ea4acef2de642d31654f8405accc6e523ee08063 Mon Sep 17 00:00:00 2001 From: malte_langkabel Date: Wed, 20 Apr 2016 13:24:03 +0200 Subject: [PATCH] logic: codeview activation policy * changed activation policy of codeview to activate implicit nodes only when no explicit or undefined nodes are found for the clicked code location. --- src/lib/data/Storage.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/data/Storage.cpp b/src/lib/data/Storage.cpp index f7271b95..107a8bac 100644 --- a/src/lib/data/Storage.cpp +++ b/src/lib/data/Storage.cpp @@ -477,8 +477,9 @@ std::vector Storage::getActiveTokenIdsForId(Id tokenId, Id* declarationId) c std::vector Storage::getNodeIdsForLocationIds(const std::vector& locationIds) const { - std::set nodeIds; std::set edgeIds; + std::set nodeIds; + std::set implicitNodeIds; for (Id locationId : locationIds) { @@ -492,13 +493,25 @@ std::vector Storage::getNodeIdsForLocationIds(const std::vector& locatio else if(m_sqliteStorage.isNode(elementId)) { StorageNode node = m_sqliteStorage.getNodeById(elementId); - if (node.id != 0 && intToDefinitionType(node.definitionType) == DEFINITION_EXPLICIT) + if (node.id != 0) { - nodeIds.insert(elementId); + if (intToDefinitionType(node.definitionType) == DEFINITION_IMPLICIT) + { + implicitNodeIds.insert(elementId); + } + else + { + nodeIds.insert(elementId); + } } } } + if (nodeIds.size() == 0) + { + nodeIds = implicitNodeIds; + } + if (nodeIds.size()) { return utility::toVector(nodeIds);