ui: Fixed switching code view mode shows active reference

This commit is contained in:
Eberhard Graether
2018-04-12 20:22:27 +02:00
parent 0489cac94d
commit a18aa0b9a6
5 changed files with 58 additions and 7 deletions
+1 -1
View File
@@ -350,7 +350,7 @@ Id QtCodeArea::getLocationIdOfFirstActiveLocation(Id tokenId) const
for (const Annotation& annotation : m_annotations)
{
if (annotation.locationType == LocationType::LOCATION_TOKEN && annotation.isActive &&
annotation.tokenIds.find(tokenId) != annotation.tokenIds.end())
(!tokenId || annotation.tokenIds.find(tokenId) != annotation.tokenIds.end()))
{
return annotation.locationId;
}
+18 -5
View File
@@ -408,13 +408,26 @@ void QtCodeFile::clickedSnippetButton()
void QtCodeFile::clickedMaximizeButton()
{
uint firstLineNumber = 1;
std::vector<QtCodeSnippet*> snippets = getVisibleSnippets();
if (snippets.size())
uint lineNumber = 0;
Id locationId = 0;
std::pair<QtCodeSnippet*, Id> snippet = getFirstSnippetWithActiveLocationId(0);
if (snippet.first)
{
firstLineNumber = snippets[0]->getStartLineNumber();
locationId = snippet.second;
}
m_navigator->requestScroll(m_filePath, firstLineNumber, 0, false, QtCodeNavigateable::SCROLL_CENTER);
else
{
lineNumber = 1;
std::vector<QtCodeSnippet*> snippets = getVisibleSnippets();
if (snippets.size())
{
lineNumber = snippets[0]->getStartLineNumber();
}
}
m_navigator->requestScroll(m_filePath, lineNumber, locationId, false, QtCodeNavigateable::SCROLL_CENTER);
MessageChangeFileView(
m_filePath,
+19
View File
@@ -323,6 +323,25 @@ void QtCodeFileList::maximizeFirstFile()
}
}
std::pair<QtCodeFile*, Id> QtCodeFileList::getFirstFileWithActiveLocationId() const
{
for (QtCodeFile* file : m_files)
{
if (file->isCollapsed())
{
continue;
}
std::pair<QtCodeSnippet*, Id> snippet = file->getFirstSnippetWithActiveLocationId(0);
if (snippet.first != nullptr)
{
return std::make_pair(file, snippet.second);
}
}
return std::make_pair(nullptr, 0);
}
std::pair<QtCodeSnippet*, Id> QtCodeFileList::getFirstSnippetWithActiveLocationId(Id tokenId) const
{
std::pair<QtCodeSnippet*, Id> result(nullptr, 0);
+1
View File
@@ -53,6 +53,7 @@ public:
void maximizeFirstFile();
std::pair<QtCodeFile*, Id> getFirstFileWithActiveLocationId() const;
std::pair<QtCodeSnippet*, Id> getFirstSnippetWithActiveLocationId(Id tokenId) const;
protected:
+19 -1
View File
@@ -821,12 +821,30 @@ void QtCodeNavigator::nextReference(bool fromUI)
void QtCodeNavigator::setModeList()
{
if (m_mode == MODE_LIST)
{
return;
}
m_single->clickedSnippetButton();
}
void QtCodeNavigator::setModeSingle()
{
m_list->maximizeFirstFile();
if (m_mode == MODE_SINGLE)
{
return;
}
QtCodeFile* file = m_list->getFirstFileWithActiveLocationId().first;
if (file)
{
file->clickedMaximizeButton();
}
else
{
m_list->maximizeFirstFile();
}
}
void QtCodeNavigator::showCurrentReference(bool fromUI)