ui: Prevent flickering of edges when going back after multiple edge activations

This commit is contained in:
Eberhard Graether
2019-01-10 22:56:14 +01:00
parent 3014dd35a8
commit 08dc7ec98b
4 changed files with 13 additions and 11 deletions
@@ -99,13 +99,18 @@ void GraphController::handleMessage(MessageActivateTokens* message)
m_activeEdgeIds = message->tokenIds;
setActiveAndVisibility(utility::concat(m_activeNodeIds, m_activeEdgeIds));
if (message->isReplayed())
{
return;
}
Id edgeId = 0;
if (message->isEdge && message->tokenIds.size() == 1)
{
edgeId = message->tokenIds[0];
}
getView()->activateEdge(edgeId, message->isReplayed() && message->isLast());
getView()->activateEdge(edgeId);
return;
}
else if (message->isAggregation)
@@ -269,7 +274,10 @@ void GraphController::handleMessage(MessageActivateTrailEdge* message)
{
TRACE("trail edge activate");
getView()->activateEdge(message->edgeIds.back(), message->isReplayed() && message->isLast());
m_activeEdgeIds = message->edgeIds;
setVisibility(setActive(utility::concat(m_activeNodeIds, m_activeEdgeIds), true));
getView()->activateEdge(message->edgeIds.back());
}
void GraphController::handleMessage(MessageFlushUpdates* message)
+1 -1
View File
@@ -53,7 +53,7 @@ public:
virtual void scrollToValues(int xValue, int yValue) = 0;
virtual void activateEdge(Id edgeId, bool centerOrigin) = 0;
virtual void activateEdge(Id edgeId) = 0;
};
#endif // GRAPH_VIEW_H
+1 -7
View File
@@ -518,7 +518,7 @@ void QtGraphView::scrollToValues(int xValue, int yValue)
m_scrollValues = Vec2i(xValue, yValue);
}
void QtGraphView::activateEdge(Id edgeId, bool centerOrigin)
void QtGraphView::activateEdge(Id edgeId)
{
m_onQtThread(
[=]()
@@ -541,12 +541,6 @@ void QtGraphView::activateEdge(Id edgeId, bool centerOrigin)
if (edge->getData() && edge->getData()->getId() == edgeId)
{
edge->setIsActive(true);
if (centerOrigin)
{
centerNode(edge->getOwner());
}
break;
}
}
+1 -1
View File
@@ -65,7 +65,7 @@ public:
virtual void scrollToValues(int xValue, int yValue);
virtual void activateEdge(Id edgeId, bool centerOrigin);
virtual void activateEdge(Id edgeId);
private slots:
void updateScrollBars();