logic: fixes all over the place
* fixed refreshing to send another ui refresh message after parsing * keepContent field for MessageBase so that views won't update * fixed searchmatching to only weigh uppercase letters next to lowercase ones * fixed file not jumping back to snippets when activating edge * clicking into empty space deselects active edge * clear file manager files on every fetch * added db transaction for file clearing * use zooming instead of changing font size
This commit is contained in:
@@ -26,7 +26,7 @@ const uint CodeController::s_lineRadius = 2;
|
||||
|
||||
void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (message->isEdge && message->isIgnorable())
|
||||
if (message->keepContent() && message->isIgnorable())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -47,6 +47,10 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
if (message->isEdge)
|
||||
{
|
||||
view->showFirstActiveSnippet();
|
||||
}
|
||||
|
||||
if (message->keepContent())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,10 +41,11 @@ void FeatureController::handleMessage(MessageActivateEdge* message)
|
||||
return;
|
||||
}
|
||||
|
||||
MessageActivateTokens msg(std::vector<Id>(1, edgeId));
|
||||
msg.isEdge = true;
|
||||
msg.undoRedoType = message->undoRedoType;
|
||||
msg.dispatchImmediately();
|
||||
MessageActivateTokens m(std::vector<Id>(1, edgeId));
|
||||
m.isEdge = true;
|
||||
m.undoRedoType = message->undoRedoType;
|
||||
m.setKeepContent(message->keepContent());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +53,7 @@ void FeatureController::handleMessage(MessageActivateFile* message)
|
||||
{
|
||||
MessageActivateTokens m(std::vector<Id>(1, m_storageAccess->getTokenIdForFileNode(message->filePath)));
|
||||
m.undoRedoType = message->undoRedoType;
|
||||
m.setKeepContent(message->keepContent());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
@@ -80,6 +82,7 @@ void FeatureController::handleMessage(MessageActivateNodes* message)
|
||||
MessageActivateTokens m(nodeIds);
|
||||
m.isFromSystem = message->isFromSystem;
|
||||
m.undoRedoType = message->undoRedoType;
|
||||
m.setKeepContent(message->keepContent());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
@@ -88,16 +91,16 @@ void FeatureController::handleMessage(MessageActivateTokenLocations* message)
|
||||
std::vector<Id> nodeIds = m_storageAccess->getNodeIdsForLocationIds(message->locationIds);
|
||||
nodeIds = m_storageAccess->getActiveTokenIdsForTokenIds(nodeIds);
|
||||
|
||||
MessageActivateNodes msg;
|
||||
MessageActivateNodes m;
|
||||
for (Id nodeId : nodeIds)
|
||||
{
|
||||
msg.addNode(
|
||||
m.addNode(
|
||||
nodeId,
|
||||
m_storageAccess->getNodeTypeForNodeWithId(nodeId),
|
||||
m_storageAccess->getNameHierarchyForNodeWithId(nodeId)
|
||||
);
|
||||
}
|
||||
msg.dispatchImmediately();
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageSearch* message)
|
||||
@@ -107,6 +110,7 @@ void FeatureController::handleMessage(MessageSearch* message)
|
||||
|
||||
MessageActivateTokens m(tokenIds);
|
||||
m.undoRedoType = message->undoRedoType;
|
||||
m.setKeepContent(message->keepContent());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ GraphController::~GraphController()
|
||||
|
||||
void GraphController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (message->isEdge && message->tokenIds.size() == 1)
|
||||
if (message->isEdge || message->keepContent())
|
||||
{
|
||||
m_activeEdgeIds = message->tokenIds;
|
||||
setActiveAndVisibility(utility::concat(m_activeNodeIds, m_activeEdgeIds));
|
||||
|
||||
@@ -14,7 +14,7 @@ SearchController::~SearchController()
|
||||
|
||||
void SearchController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (!message->isEdge)
|
||||
if (!message->keepContent())
|
||||
{
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(message->tokenIds));
|
||||
}
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
#include "utility/messaging/type/MessageFlushUpdates.h"
|
||||
|
||||
#include "component/view/UndoRedoView.h"
|
||||
#include "data/access/StorageAccess.h"
|
||||
|
||||
UndoRedoController::UndoRedoController()
|
||||
: m_lastCommand(nullptr, 0)
|
||||
UndoRedoController::UndoRedoController(StorageAccess* storageAccess)
|
||||
: m_storageAccess(storageAccess)
|
||||
, m_lastCommand(nullptr, 0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -63,6 +65,34 @@ void UndoRedoController::handleMessage(MessageActivateNodes* message)
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageDeactivateEdge* message)
|
||||
{
|
||||
MessageBase* m = nullptr;
|
||||
|
||||
if (m_lastCommand.message && m_lastCommand.order == 0)
|
||||
{
|
||||
m = m_lastCommand.message.get();
|
||||
}
|
||||
else if (m_undo.size())
|
||||
{
|
||||
int i = m_undo.size() - 1;
|
||||
while (i >= 0 && m_undo[i].order > 0)
|
||||
{
|
||||
i--;
|
||||
}
|
||||
m = m_undo[i].message.get();
|
||||
}
|
||||
|
||||
if (m)
|
||||
{
|
||||
bool keepContent = m->keepContent();
|
||||
m->undoRedoType = MessageBase::UNDOTYPE_NORMAL;
|
||||
m->setKeepContent(true);
|
||||
m->dispatch();
|
||||
m->setKeepContent(keepContent);
|
||||
}
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageGraphNodeBundleSplit* message)
|
||||
{
|
||||
Command command(std::make_shared<MessageGraphNodeBundleSplit>(*message), 1);
|
||||
@@ -101,8 +131,31 @@ void UndoRedoController::handleMessage(MessageRedo* message)
|
||||
|
||||
void UndoRedoController::handleMessage(MessageRefresh* message)
|
||||
{
|
||||
if (!message->uiOnly)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!m_lastCommand.message)
|
||||
{
|
||||
Id nodeId = m_storageAccess->getIdForNodeWithNameHierarchy(NameHierarchy("main"));
|
||||
if (!nodeId)
|
||||
{
|
||||
nodeId = m_storageAccess->getIdForFirstNode();
|
||||
}
|
||||
|
||||
if (nodeId)
|
||||
{
|
||||
MessageActivateNodes m;
|
||||
m.addNode(
|
||||
nodeId,
|
||||
m_storageAccess->getNodeTypeForNodeWithId(nodeId),
|
||||
m_storageAccess->getNameHierarchyForNodeWithId(nodeId)
|
||||
);
|
||||
m.isFromSystem = true;
|
||||
m.dispatch();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "utility/messaging/type/MessageActivateEdge.h"
|
||||
#include "utility/messaging/type/MessageActivateFile.h"
|
||||
#include "utility/messaging/type/MessageActivateNodes.h"
|
||||
#include "utility/messaging/type/MessageDeactivateEdge.h"
|
||||
#include "utility/messaging/type/MessageGraphNodeBundleSplit.h"
|
||||
#include "utility/messaging/type/MessageGraphNodeExpand.h"
|
||||
#include "utility/messaging/type/MessageGraphNodeMove.h"
|
||||
@@ -21,6 +22,7 @@
|
||||
|
||||
#include "component/controller/Controller.h"
|
||||
|
||||
class StorageAccess;
|
||||
class UndoRedoView;
|
||||
|
||||
class UndoRedoController
|
||||
@@ -28,6 +30,7 @@ class UndoRedoController
|
||||
, public MessageListener<MessageActivateEdge>
|
||||
, public MessageListener<MessageActivateFile>
|
||||
, public MessageListener<MessageActivateNodes>
|
||||
, public MessageListener<MessageDeactivateEdge>
|
||||
, public MessageListener<MessageGraphNodeBundleSplit>
|
||||
, public MessageListener<MessageGraphNodeExpand>
|
||||
, public MessageListener<MessageGraphNodeMove>
|
||||
@@ -40,7 +43,7 @@ class UndoRedoController
|
||||
, public MessageListener<MessageUndo>
|
||||
{
|
||||
public:
|
||||
UndoRedoController();
|
||||
UndoRedoController(StorageAccess* storageAccess);
|
||||
virtual ~UndoRedoController();
|
||||
|
||||
UndoRedoView* getView();
|
||||
@@ -57,6 +60,7 @@ private:
|
||||
virtual void handleMessage(MessageActivateEdge* message);
|
||||
virtual void handleMessage(MessageActivateFile* message);
|
||||
virtual void handleMessage(MessageActivateNodes* message);
|
||||
virtual void handleMessage(MessageDeactivateEdge* message);
|
||||
virtual void handleMessage(MessageGraphNodeBundleSplit* message);
|
||||
virtual void handleMessage(MessageGraphNodeExpand* message);
|
||||
virtual void handleMessage(MessageGraphNodeMove* message);
|
||||
@@ -77,6 +81,8 @@ private:
|
||||
|
||||
void clear();
|
||||
|
||||
StorageAccess* m_storageAccess;
|
||||
|
||||
Command m_lastCommand;
|
||||
|
||||
std::deque<Command> m_undo;
|
||||
|
||||
Reference in New Issue
Block a user