ui: switch to single file mode with snippet maximize
* switch back to snippet view with snippet button in file title bar * use new title bar widget in single view as well * restore view mode on undo, store current view mode for every message id (added id to message) * treat view mode switch as adapt message on undo stack * fixed crash after snippet expansion * fixed hatching in file title not shown
This commit is contained in:
@@ -31,6 +31,7 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
{
|
||||
TRACE("code all");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
clear();
|
||||
|
||||
Project* currentProject = Application::getInstance()->getCurrentProject().get();
|
||||
@@ -107,6 +108,8 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
TRACE("code activate");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
|
||||
CodeView::CodeParams params;
|
||||
@@ -180,6 +183,8 @@ void CodeController::handleMessage(MessageActivateTrailEdge* message)
|
||||
{
|
||||
TRACE("trail edge activate");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
getView()->scrollTo(scrollParams);
|
||||
|
||||
@@ -197,14 +202,6 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
{
|
||||
TRACE("code change file");
|
||||
|
||||
if (!m_collection)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CodeView* view = getView();
|
||||
bool inListMode = view->isInListMode();
|
||||
|
||||
CodeView::FileState state;
|
||||
switch (message->state)
|
||||
{
|
||||
@@ -219,13 +216,15 @@ void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
case MessageChangeFileView::FILE_MAXIMIZED:
|
||||
state = CodeView::FILE_MAXIMIZED;
|
||||
break;
|
||||
|
||||
case MessageChangeFileView::FILE_DEFAULT_FOR_MODE:
|
||||
state = inListMode ? CodeView::FILE_SNIPPETS : CodeView::FILE_MAXIMIZED;
|
||||
break;
|
||||
}
|
||||
|
||||
if (message->needsData)
|
||||
CodeView* view = getView();
|
||||
if (message->viewMode != MessageChangeFileView::VIEW_CURRENT)
|
||||
{
|
||||
view->setMode(message->viewMode == MessageChangeFileView::VIEW_LIST);
|
||||
}
|
||||
|
||||
if (message->needsData && !message->filePath.empty())
|
||||
{
|
||||
CodeView::CodeParams params;
|
||||
view->showCodeSnippets(getSnippetsForFileWithState(message->filePath, state, !message->showErrors), params);
|
||||
@@ -302,6 +301,8 @@ void CodeController::handleMessage(MessageShowErrors* message)
|
||||
{
|
||||
TRACE("code errors");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
CodeView* view = getView();
|
||||
if (!view->showsErrors() || !message->errorId)
|
||||
{
|
||||
@@ -337,6 +338,8 @@ void CodeController::handleMessage(MessageSearchFullText* message)
|
||||
{
|
||||
TRACE("code fulltext");
|
||||
|
||||
saveOrRestoreViewMode(message);
|
||||
|
||||
m_collection = m_storageAccess->getFullTextSearchLocations(message->searchTerm, message->caseSensitive);
|
||||
|
||||
CodeView::ScrollParams scrollParams(CodeView::ScrollParams::SCROLL_TO_DEFINITION);
|
||||
@@ -892,3 +895,19 @@ void CodeController::addActiveSourceLocations(std::shared_ptr<SourceLocationFile
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void CodeController::saveOrRestoreViewMode(MessageBase* message)
|
||||
{
|
||||
if (message->isReplayed())
|
||||
{
|
||||
auto it = m_messageIdToViewModeMap.find(message->getId());
|
||||
if (it != m_messageIdToViewModeMap.end())
|
||||
{
|
||||
getView()->setMode(it->second);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_messageIdToViewModeMap.emplace(message->getId(), getView()->isInListMode());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user