Skip to content
This repository has been archived by the owner on Dec 14, 2021. It is now read-only.

Commit

Permalink
ui: Return to active symbol definition in code view when clicking act…
Browse files Browse the repository at this point in the history
…ive node in graph view (issue #836)
  • Loading branch information
egraether committed Dec 9, 2019
1 parent eeb5b13 commit f25e8aa
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 38 deletions.
32 changes: 10 additions & 22 deletions src/lib/component/controller/CodeController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down
10 changes: 10 additions & 0 deletions src/lib/component/controller/GraphController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 3 additions & 0 deletions src/lib/component/controller/GraphController.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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>
Expand All @@ -64,6 +66,7 @@ class GraphController
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;
Expand Down
19 changes: 4 additions & 15 deletions src/lib/component/controller/UndoRedoController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
9 changes: 8 additions & 1 deletion src/lib_gui/qt/element/code/QtCodeFileSingle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit f25e8aa

Please sign in to comment.