ui: Fixed aggregation click and activation of already active symbol

This commit is contained in:
Eberhard Graether
2016-02-03 15:23:24 +01:00
parent b40e49b633
commit 5c49eaf293
4 changed files with 22 additions and 1 deletions
+2
View File
@@ -10,6 +10,8 @@
background-color: <color:code/snippet/background>;
border: 2px solid <color:code/file/background>;
border-radius: 12px;
border-top-left-radius: 14px;
border-top-right-radius: 14px;
padding-bottom: 7px;
}
@@ -23,12 +23,13 @@ ActivationTranslator::~ActivationTranslator()
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateEdge* message) const
{
std::shared_ptr<MessageActivateTokens> 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<MessageActivateTokens>(message, m_storageAccess->getTokenIdsForAggregationEdge(sourceId, targetId));
m->setKeepContent(false);
m->isAggregation = true;
}
else
+11
View File
@@ -419,8 +419,14 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event)
std::vector<Id> locationIds;
std::vector<Id> 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();
@@ -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();