diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index 93a31413..d173b8de 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -139,6 +139,11 @@ void GraphController::handleMessage(MessageGraphNodeBundleSplit* message) void GraphController::handleMessage(MessageGraphNodeExpand* message) { + if (message->ignoreIfNotReplayed && !message->isReplayed()) + { + return; + } + DummyNode* node = getDummyGraphNodeById(message->tokenId); if (node) { @@ -332,7 +337,8 @@ std::vector GraphController::getExpandedNodeIds() const for (std::pair> p : m_dummyGraphNodes) { DummyNode* oldNode = p.second.get(); - if (oldNode->expanded && oldNode->isGraphNode() && !oldNode->data->isType(Node::NODE_FUNCTION | Node::NODE_METHOD)) + if (oldNode->expanded && !oldNode->autoExpanded && oldNode->isGraphNode() && + !oldNode->data->isType(Node::NODE_FUNCTION | Node::NODE_METHOD)) { nodeIds.push_back(p.first); } @@ -345,14 +351,10 @@ void GraphController::setExpandedNodeIds(const std::vector& nodeIds) for (Id id : nodeIds) { DummyNode* node = getDummyGraphNodeById(id); - if (node && node->topLevelAncestorId) + if (node) { - DummyNode* parent = getDummyGraphNodeById(node->topLevelAncestorId); - - if (parent && parent->hasActiveSubNode()) - { - node->expanded = true; - } + node->expanded = true; + MessageGraphNodeExpand(id, true, true); } } } @@ -368,6 +370,7 @@ void GraphController::autoExpandActiveNode(const std::vector& activeTokenIds if (node) { node->expanded = true; + node->autoExpanded = true; } } diff --git a/src/lib/component/controller/helper/DummyNode.h b/src/lib/component/controller/helper/DummyNode.h index 7414ca36..9f6da63c 100644 --- a/src/lib/component/controller/helper/DummyNode.h +++ b/src/lib/component/controller/helper/DummyNode.h @@ -40,6 +40,7 @@ public: , active(false) , connected(false) , expanded(false) + , autoExpanded(false) , hasParent(true) , accessKind(ACCESS_NONE) , invisibleSubNodeCount(0) @@ -236,6 +237,7 @@ public: bool active; bool connected; bool expanded; + bool autoExpanded; bool hasParent; // AccessNode diff --git a/src/lib/utility/messaging/type/MessageGraphNodeExpand.h b/src/lib/utility/messaging/type/MessageGraphNodeExpand.h index c6ea5655..2ea19458 100644 --- a/src/lib/utility/messaging/type/MessageGraphNodeExpand.h +++ b/src/lib/utility/messaging/type/MessageGraphNodeExpand.h @@ -8,9 +8,10 @@ class MessageGraphNodeExpand : public Message { public: - MessageGraphNodeExpand(Id tokenId, bool expand) + MessageGraphNodeExpand(Id tokenId, bool expand, bool ignoreIfNotReplayed = false) : tokenId(tokenId) , expand(expand) + , ignoreIfNotReplayed(ignoreIfNotReplayed) { } @@ -34,6 +35,7 @@ public: const Id tokenId; const bool expand; + const bool ignoreIfNotReplayed; }; #endif // MESSAGE_GRAPH_NODE_EXPAND_H