ui: Return to active symbol definition in code view when clicking active node in graph view (issue #836)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user