From 08dc7ec98b1df297402fb61cef21cad700401a21 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Thu, 10 Jan 2019 22:56:14 +0100 Subject: [PATCH] ui: Prevent flickering of edges when going back after multiple edge activations --- src/lib/component/controller/GraphController.cpp | 12 ++++++++++-- src/lib/component/view/GraphView.h | 2 +- src/lib_gui/qt/view/QtGraphView.cpp | 8 +------- src/lib_gui/qt/view/QtGraphView.h | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index 11848d3d..5856306f 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -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) diff --git a/src/lib/component/view/GraphView.h b/src/lib/component/view/GraphView.h index f237ee48..7dca2ccc 100644 --- a/src/lib/component/view/GraphView.h +++ b/src/lib/component/view/GraphView.h @@ -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 diff --git a/src/lib_gui/qt/view/QtGraphView.cpp b/src/lib_gui/qt/view/QtGraphView.cpp index 154ef315..eb659f1c 100644 --- a/src/lib_gui/qt/view/QtGraphView.cpp +++ b/src/lib_gui/qt/view/QtGraphView.cpp @@ -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; } } diff --git a/src/lib_gui/qt/view/QtGraphView.h b/src/lib_gui/qt/view/QtGraphView.h index 5c7a3738..723e6cc7 100644 --- a/src/lib_gui/qt/view/QtGraphView.h +++ b/src/lib_gui/qt/view/QtGraphView.h @@ -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();