ui: Prevent activation of already activated Tokens

This commit is contained in:
Eberhard Graether
2015-05-21 03:32:02 +02:00
parent 5868fe4d39
commit 1e8d8cece0
7 changed files with 24 additions and 28 deletions
+7 -1
View File
@@ -245,7 +245,13 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event)
if (annotation)
{
MessageActivateTokenLocation(annotation->locationId).dispatch();
const std::vector<Id>& ids = m_fileWidget->getActiveTokenIds();
bool isActive = std::find(ids.begin(), ids.end(), annotation->tokenId) != ids.end();
if (!isActive)
{
MessageActivateTokenLocation(annotation->locationId).dispatch();
}
}
}
}
+1 -1
View File
@@ -9,8 +9,8 @@
QtCodeFileList::QtCodeFileList(QWidget* parent)
: QScrollArea(parent)
, m_showMaximizeButton(true)
, m_focusedTokenId(0)
, m_showMaximizeButton(true)
{
m_frame = std::make_shared<QFrame>(this);
+2 -2
View File
@@ -11,7 +11,7 @@ void QtGraphPostprocessor::doPostprocessing(std::list<std::shared_ptr<QtGraphNod
if (nodes.size() < 2)
{
LOG_WARNING_STREAM(<< "Skipping postprocessing, need at least 2 nodes but got " << nodes.size());
LOG_INFO_STREAM(<< "Skipping postprocessing, need at least 2 nodes but got " << nodes.size());
return;
}
@@ -198,7 +198,7 @@ void QtGraphPostprocessor::resolveOverlap(std::list<std::shared_ptr<QtGraphNode>
while (overlap && iterationCount < maxIterations)
{
LOG_WARNING_STREAM(<< iterationCount);
LOG_INFO_STREAM(<< iterationCount);
overlap = false;
iterationCount++;
@@ -106,7 +106,7 @@ void QtGraphEdge::onClick()
message.isAggregation = true;
message.dispatch();
}
else
else if (!m_isActive)
{
MessageActivateTokens message(getData()->getId());
message.isEdge = true;
@@ -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();
}
@@ -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<GraphView>();
}
void GraphController::setActiveTokenIds(const std::vector<Id>& activeTokenIds)
{
m_activeTokenIds = activeTokenIds;
m_currentActiveTokenIds = activeTokenIds;
}
void GraphController::createDummyGraphForTokenIds(const std::vector<Id>& 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)
{
@@ -45,8 +45,6 @@ private:
GraphView* getView() const;
void setActiveTokenIds(const std::vector<Id>& activeTokenIds);
void createDummyGraphForTokenIds(const std::vector<Id>& tokenIds);
DummyNode createDummyNodeTopDown(Node* node);
@@ -71,7 +69,6 @@ private:
std::vector<DummyEdge> m_dummyEdges;
std::vector<Id> m_activeTokenIds;
std::vector<Id> m_currentActiveTokenIds;
};
#endif // GRAPH_CONTROLLER_H