From 5c49eaf293030ffed7e1cdee3704d6a5b56a7086 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Wed, 3 Feb 2016 15:23:24 +0100 Subject: [PATCH] ui: Fixed aggregation click and activation of already active symbol --- bin/app/data/gui/code_view/code_view.css | 2 ++ .../controller/helper/ActivationTranslator.cpp | 3 ++- src/lib_gui/qt/element/QtCodeArea.cpp | 11 +++++++++++ src/lib_gui/qt/view/graphElements/QtGraphNodeData.cpp | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/bin/app/data/gui/code_view/code_view.css b/bin/app/data/gui/code_view/code_view.css index e9db87ac..4df3caf8 100644 --- a/bin/app/data/gui/code_view/code_view.css +++ b/bin/app/data/gui/code_view/code_view.css @@ -10,6 +10,8 @@ background-color: ; border: 2px solid ; border-radius: 12px; + border-top-left-radius: 14px; + border-top-right-radius: 14px; padding-bottom: 7px; } diff --git a/src/lib/component/controller/helper/ActivationTranslator.cpp b/src/lib/component/controller/helper/ActivationTranslator.cpp index 3b25b04e..7820ac0d 100644 --- a/src/lib/component/controller/helper/ActivationTranslator.cpp +++ b/src/lib/component/controller/helper/ActivationTranslator.cpp @@ -23,12 +23,13 @@ ActivationTranslator::~ActivationTranslator() std::shared_ptr ActivationTranslator::translateMessage(const MessageActivateEdge* message) const { std::shared_ptr m; - if (message->type == Edge::EDGE_AGGREGATION) + if (message->isAggregation()) { const Id sourceId = m_storageAccess->getIdForNodeWithNameHierarchy(message->fromNameHierarchy); const Id targetId = m_storageAccess->getIdForNodeWithNameHierarchy(message->toNameHierarchy); m = std::make_shared(message, m_storageAccess->getTokenIdsForAggregationEdge(sourceId, targetId)); + m->setKeepContent(false); m->isAggregation = true; } else diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index cea88bfe..2a648d94 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -419,8 +419,14 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event) std::vector locationIds; std::vector tokenIds; + bool allActive = true; for (const Annotation* annotation : annotations) { + if (!annotation->isActive) + { + allActive = false; + } + if (annotation->locationId > 0) { locationIds.push_back(annotation->locationId); @@ -431,6 +437,11 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event) } } + if (allActive) + { + return; + } + if (locationIds.size()) { MessageActivateTokenLocations(locationIds).dispatch(); diff --git a/src/lib_gui/qt/view/graphElements/QtGraphNodeData.cpp b/src/lib_gui/qt/view/graphElements/QtGraphNodeData.cpp index 07cda5d2..d6680316 100644 --- a/src/lib_gui/qt/view/graphElements/QtGraphNodeData.cpp +++ b/src/lib_gui/qt/view/graphElements/QtGraphNodeData.cpp @@ -1,6 +1,7 @@ #include "qt/view/graphElements/QtGraphNodeData.h" #include "utility/messaging/type/MessageActivateNodes.h" +#include "utility/messaging/type/MessageDeactivateEdge.h" #include "utility/messaging/type/MessageFocusIn.h" #include "utility/messaging/type/MessageFocusOut.h" #include "utility/messaging/type/MessageGraphNodeMove.h" @@ -54,6 +55,12 @@ Id QtGraphNodeData::getTokenId() const void QtGraphNodeData::onClick() { + if (m_isActive) + { + MessageDeactivateEdge().dispatch(); + return; + } + MessageActivateNodes message; message.addNode(m_data->getId(), m_data->getType(), m_data->getNameHierarchy()); message.dispatch();