diff --git a/src/app/qt/element/QtCodeArea.cpp b/src/app/qt/element/QtCodeArea.cpp index 30b90f5b..1ff3e9c1 100644 --- a/src/app/qt/element/QtCodeArea.cpp +++ b/src/app/qt/element/QtCodeArea.cpp @@ -245,7 +245,13 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event) if (annotation) { - MessageActivateTokenLocation(annotation->locationId).dispatch(); + const std::vector& ids = m_fileWidget->getActiveTokenIds(); + bool isActive = std::find(ids.begin(), ids.end(), annotation->tokenId) != ids.end(); + + if (!isActive) + { + MessageActivateTokenLocation(annotation->locationId).dispatch(); + } } } } diff --git a/src/app/qt/element/QtCodeFileList.cpp b/src/app/qt/element/QtCodeFileList.cpp index cea53e15..4a9da135 100644 --- a/src/app/qt/element/QtCodeFileList.cpp +++ b/src/app/qt/element/QtCodeFileList.cpp @@ -9,8 +9,8 @@ QtCodeFileList::QtCodeFileList(QWidget* parent) : QScrollArea(parent) - , m_showMaximizeButton(true) , m_focusedTokenId(0) + , m_showMaximizeButton(true) { m_frame = std::make_shared(this); diff --git a/src/app/qt/utility/QtGraphPostprocessor.cpp b/src/app/qt/utility/QtGraphPostprocessor.cpp index 6aa7b996..4a28d350 100644 --- a/src/app/qt/utility/QtGraphPostprocessor.cpp +++ b/src/app/qt/utility/QtGraphPostprocessor.cpp @@ -11,7 +11,7 @@ void QtGraphPostprocessor::doPostprocessing(std::list while (overlap && iterationCount < maxIterations) { - LOG_WARNING_STREAM(<< iterationCount); + LOG_INFO_STREAM(<< iterationCount); overlap = false; iterationCount++; diff --git a/src/app/qt/view/graphElements/QtGraphEdge.cpp b/src/app/qt/view/graphElements/QtGraphEdge.cpp index c2a129fd..5971b7dd 100644 --- a/src/app/qt/view/graphElements/QtGraphEdge.cpp +++ b/src/app/qt/view/graphElements/QtGraphEdge.cpp @@ -106,7 +106,7 @@ void QtGraphEdge::onClick() message.isAggregation = true; message.dispatch(); } - else + else if (!m_isActive) { MessageActivateTokens message(getData()->getId()); message.isEdge = true; diff --git a/src/app/qt/view/graphElements/QtGraphNode.cpp b/src/app/qt/view/graphElements/QtGraphNode.cpp index c7760032..a88fa551 100644 --- a/src/app/qt/view/graphElements/QtGraphNode.cpp +++ b/src/app/qt/view/graphElements/QtGraphNode.cpp @@ -6,8 +6,8 @@ #include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageGraphNodeMove.h" -#include "utility/messaging/type/MessageFocusIn.h"; -#include "utility/messaging/type/MessageFocusOut.h"; +#include "utility/messaging/type/MessageFocusIn.h" +#include "utility/messaging/type/MessageFocusOut.h" #include "qt/graphics/QtRoundedRectItem.h" #include "qt/utility/QtDeviceScaledPixmap.h" @@ -252,7 +252,7 @@ void QtGraphNode::setShadowEnabledRecursive(bool enabled) void QtGraphNode::onClick() { - if (m_data && !m_data->isType(Node::NODE_UNDEFINED | Node::NODE_NAMESPACE)) + if (!m_isActive && m_data && !m_data->isType(Node::NODE_UNDEFINED | Node::NODE_NAMESPACE)) { MessageActivateTokens(m_data->getId()).dispatch(); } diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index 1ef1fd09..b5b719c1 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -23,27 +23,22 @@ GraphController::~GraphController() void GraphController::handleMessage(MessageActivateTokens* message) { + m_activeTokenIds = message->tokenIds; + if (message->isEdge && message->tokenIds.size() == 1) { - m_currentActiveTokenIds = m_activeTokenIds; - m_currentActiveTokenIds.push_back(message->tokenIds[0]); - - setActiveAndVisibility(m_currentActiveTokenIds); + setActiveAndVisibility(message->tokenIds); getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges); return; } if (message->isAggregation) { - m_activeTokenIds.clear(); - m_currentActiveTokenIds = message->tokenIds; - - createDummyGraphForTokenIds(m_currentActiveTokenIds); + createDummyGraphForTokenIds(message->tokenIds); return; } - setActiveTokenIds(message->tokenIds); - createDummyGraphForTokenIds(m_activeTokenIds); + createDummyGraphForTokenIds(message->tokenIds); } void GraphController::handleMessage(MessageFinishedParsing* message) @@ -76,7 +71,7 @@ void GraphController::handleMessage(MessageGraphNodeExpand* message) node->expanded = !node->expanded; } - setActiveAndVisibility(m_currentActiveTokenIds); + setActiveAndVisibility(m_activeTokenIds); layoutNesting(); getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges); @@ -98,12 +93,6 @@ GraphView* GraphController::getView() const return Controller::getView(); } -void GraphController::setActiveTokenIds(const std::vector& activeTokenIds) -{ - m_activeTokenIds = activeTokenIds; - m_currentActiveTokenIds = activeTokenIds; -} - void GraphController::createDummyGraphForTokenIds(const std::vector& tokenIds) { GraphView* view = getView(); @@ -337,6 +326,10 @@ void GraphController::setNodeActiveRecursive(DummyNode& node, const std::vector< { node.active = find(activeTokenIds.begin(), activeTokenIds.end(), node.data->getId()) != activeTokenIds.end(); } + else if (node.isExpandToggleNode()) + { + node.visible = true; + } for (DummyNode& subNode : node.subNodes) { diff --git a/src/lib/component/controller/GraphController.h b/src/lib/component/controller/GraphController.h index 3820d2f4..45f97902 100644 --- a/src/lib/component/controller/GraphController.h +++ b/src/lib/component/controller/GraphController.h @@ -45,8 +45,6 @@ private: GraphView* getView() const; - void setActiveTokenIds(const std::vector& activeTokenIds); - void createDummyGraphForTokenIds(const std::vector& tokenIds); DummyNode createDummyNodeTopDown(Node* node); @@ -71,7 +69,6 @@ private: std::vector m_dummyEdges; std::vector m_activeTokenIds; - std::vector m_currentActiveTokenIds; }; #endif // GRAPH_CONTROLLER_H