ui: Return to active symbol definition in code view when clicking active node in graph view (issue #836)

This commit is contained in:
Eberhard Graether
2019-12-09 17:51:18 +01:00
parent eeb5b13797
commit f25e8aa32d
5 changed files with 35 additions and 38 deletions
+10 -22
View File
@@ -214,18 +214,6 @@ void CodeController::handleMessage(MessageActivateTokens* message)
return;
}
if (message->keepContent()) // deactivating an edge
{
m_codeParams.activeTokenIds = params.activeTokenIds;
m_codeParams.activeLocationIds.clear();
m_codeParams.activeLocalSymbolIds.clear();
m_codeParams.currentActiveLocalLocationIds.clear();
clearLocalReferences();
showFiles(m_codeParams, CodeScrollParams(), !message->isReplayed());
return;
}
m_collection = m_storageAccess->getSourceLocationsForTokenIds(params.activeTokenIds);
m_files = getFilesForActiveSourceLocations(m_collection.get(), declarationId);
@@ -414,19 +402,19 @@ void CodeController::handleMessage(MessageCodeShowDefinition* message)
void CodeController::handleMessage(MessageDeactivateEdge* message)
{
CodeScrollParams scrollParams;
m_codeParams.activeLocationIds.clear();
m_codeParams.activeLocalSymbolIds.clear();
m_codeParams.currentActiveLocalLocationIds.clear();
m_referenceIndex = -1;
clearLocalReferences();
if (message->scrollToDefinition)
{
CodeScrollParams scrollParams = definitionReferenceScrollParams(m_codeParams.activeTokenIds);
if (message->isReplayed())
{
m_scrollParams = scrollParams;
}
else
{
getView()->scrollTo(scrollParams, true);
}
scrollParams = definitionReferenceScrollParams(m_codeParams.activeTokenIds);
}
showFiles(m_codeParams, scrollParams, !message->isReplayed());
}
void CodeController::handleMessage(MessageErrorCountClear* message)
@@ -316,6 +316,16 @@ void GraphController::handleMessage(MessageActivateTrailEdge* message)
getView()->activateEdge(message->edgeIds.back());
}
void GraphController::handleMessage(MessageDeactivateEdge* message)
{
TRACE("edge deactivate");
m_activeEdgeIds.clear();
setActive(utility::concat(m_activeNodeIds, m_activeEdgeIds), false);
getView()->activateEdge(0);
}
void GraphController::handleMessage(MessageFlushUpdates* message)
{
GraphView::GraphParams params;
@@ -11,6 +11,7 @@
#include "MessageActivateTokens.h"
#include "MessageActivateTrail.h"
#include "MessageActivateTrailEdge.h"
#include "MessageDeactivateEdge.h"
#include "MessageFlushUpdates.h"
#include "MessageFocusIn.h"
#include "MessageFocusOut.h"
@@ -40,6 +41,7 @@ class GraphController
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageActivateTrail>
, public MessageListener<MessageActivateTrailEdge>
, public MessageListener<MessageDeactivateEdge>
, public MessageListener<MessageFlushUpdates>
, public MessageListener<MessageFocusIn>
, public MessageListener<MessageFocusOut>
@@ -64,6 +66,7 @@ private:
void handleMessage(MessageActivateTokens* message) override;
void handleMessage(MessageActivateTrail* message) override;
void handleMessage(MessageActivateTrailEdge* message) override;
void handleMessage(MessageDeactivateEdge* message) override;
void handleMessage(MessageFlushUpdates* message) override;
void handleMessage(MessageFocusIn* message) override;
void handleMessage(MessageFocusOut* message) override;
@@ -172,25 +172,14 @@ void UndoRedoController::handleMessage(MessageCodeShowDefinition* message)
void UndoRedoController::handleMessage(MessageDeactivateEdge* message)
{
if (m_iterator == m_list.begin())
if (sameMessageTypeAsLast(message) &&
static_cast<MessageDeactivateEdge*>(lastMessage())->scrollToDefinition == message->scrollToDefinition)
{
return;
}
std::list<Command>::iterator it = m_iterator;
do
{
std::advance(it, -1);
} while (it != m_list.begin() && it->order != Command::ORDER_ACTIVATE);
MessageBase* m = it->message.get();
bool keepContent = m->keepContent();
m->setIsReplayed(false);
m->setKeepContent(true);
m->dispatch();
m->setKeepContent(keepContent);
Command command(std::make_shared<MessageDeactivateEdge>(*message), Command::ORDER_ADAPT);
processCommand(command);
}
void UndoRedoController::handleMessage(MessageGraphNodeBundleSplit* message)
@@ -174,7 +174,14 @@ void QtCodeFileSingle::scrollTo(
{
if (m_currentFilePath != filePath)
{
return;
FileData file = getFileData(filePath);
if (!file.area)
{
return;
}
setFileData(file);
animated = false;
}
size_t endLineNumber = 0;