From 6ba93ca39f3aa49c1d54fde848981968ba44d301 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Fri, 7 Apr 2017 17:14:34 +0200 Subject: [PATCH] src: more bug fixes * fixed snippets added twice on token reactivation for errors and fulltext search results * fixed colorscheme gets refreshed when cancelling preferences * scroll to first line in errors table after indexing and showing view * fixed file not properly expanded when snippet covers full file * fixed project type naming in project setup * fixed set delimiter of NameHierarchy for projects that can't be loaded yet * changed language order for project setup --- .../component/controller/CodeController.cpp | 6 ++-- .../component/controller/ErrorController.cpp | 3 +- src/lib/data/location/SourceLocationFile.cpp | 10 ------ src/lib/project/Project.cpp | 12 +++---- src/lib/settings/LanguageType.h | 2 +- src/lib/settings/SourceGroupType.cpp | 22 ++++++++++++ src/lib/settings/SourceGroupType.h | 1 + src/lib_gui/qt/element/QtCodeNavigator.cpp | 34 +++++++++++++------ src/lib_gui/qt/view/QtErrorView.cpp | 4 +++ .../QtProjectWizzardContentPreferences.cpp | 5 ++- .../QtProjectWizzardContentPreferences.h | 2 ++ .../QtProjectWizzardContentSelect.cpp | 2 +- 12 files changed, 70 insertions(+), 33 deletions(-) diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp index 9e8ecce2..3109ff22 100644 --- a/src/lib/component/controller/CodeController.cpp +++ b/src/lib/component/controller/CodeController.cpp @@ -366,7 +366,8 @@ void CodeController::handleMessage(MessageShowErrors* message) view->clear(); view->setErrorInfos(errors); - view->showCodeSnippets(snippets, std::vector(), !message->errorId); + view->showCodeSnippets( + snippets, std::vector(), !message->errorId && (!message->isReplayed() || message->isReplayCleared())); showContents(message); } @@ -385,7 +386,8 @@ void CodeController::handleMessage(MessageSearchFullText* message) view->clear(); m_collection = m_storageAccess->getFullTextSearchLocations(message->searchTerm, message->caseSensitive); - view->showCodeSnippets(getSnippetsForCollection(m_collection, true), std::vector(), true); + view->showCodeSnippets( + getSnippetsForCollection(m_collection, true), std::vector(), !message->isReplayed() || message->isReplayCleared()); showContents(message); } diff --git a/src/lib/component/controller/ErrorController.cpp b/src/lib/component/controller/ErrorController.cpp index eb640ecf..2df3d2e3 100644 --- a/src/lib/component/controller/ErrorController.cpp +++ b/src/lib/component/controller/ErrorController.cpp @@ -40,12 +40,11 @@ void ErrorController::handleMessage(MessageShowErrors* message) clear(); std::vector errors = m_storageAccess->getErrors(); - getView()->addErrors(errors, false); - if (errors.size()) { getView()->showDockWidget(); } + getView()->addErrors(errors, false); } ErrorView* ErrorController::getView() const diff --git a/src/lib/data/location/SourceLocationFile.cpp b/src/lib/data/location/SourceLocationFile.cpp index 7f0e39b9..ddf970e2 100644 --- a/src/lib/data/location/SourceLocationFile.cpp +++ b/src/lib/data/location/SourceLocationFile.cpp @@ -151,11 +151,6 @@ std::shared_ptr SourceLocationFile::getFilteredByLines(size_ } } - if (isWhole() && ret->getSourceLocationCount() == getSourceLocationCount()) - { - ret->setIsWhole(true); - } - return ret; } @@ -171,11 +166,6 @@ std::shared_ptr SourceLocationFile::getFilteredByType(Locati } } - if (isWhole() && ret->getSourceLocationCount() == getSourceLocationCount()) - { - ret->setIsWhole(true); - } - return ret; } diff --git a/src/lib/project/Project.cpp b/src/lib/project/Project.cpp index 44bb5b47..6eeae51c 100644 --- a/src/lib/project/Project.cpp +++ b/src/lib/project/Project.cpp @@ -224,14 +224,14 @@ void Project::load() canLoad = true; } + m_sourceGroups = SourceGroupFactory::getInstance()->createSourceGroups(m_settings->getAllSourceGroupSettings()); + if (!m_sourceGroups.empty()) + { + NameHierarchy::setDelimiter(getSymbolNameDelimiterForLanguage(m_sourceGroups.front()->getLanguage())); + } + if (canLoad) { - m_sourceGroups = SourceGroupFactory::getInstance()->createSourceGroups(m_settings->getAllSourceGroupSettings()); - if (!m_sourceGroups.empty()) - { - NameHierarchy::setDelimiter(getSymbolNameDelimiterForLanguage(m_sourceGroups.front()->getLanguage())); - } - m_storage->setMode(SqliteStorage::STORAGE_MODE_READ); m_storage->buildCaches(); m_storageAccessProxy->setSubject(m_storage.get()); diff --git a/src/lib/settings/LanguageType.h b/src/lib/settings/LanguageType.h index 0ecd7f71..bcec9132 100644 --- a/src/lib/settings/LanguageType.h +++ b/src/lib/settings/LanguageType.h @@ -7,8 +7,8 @@ enum LanguageType { - LANGUAGE_C, LANGUAGE_CPP, + LANGUAGE_C, LANGUAGE_JAVA, LANGUAGE_UNKNOWN }; diff --git a/src/lib/settings/SourceGroupType.cpp b/src/lib/settings/SourceGroupType.cpp index f55b0c29..c5e48c90 100644 --- a/src/lib/settings/SourceGroupType.cpp +++ b/src/lib/settings/SourceGroupType.cpp @@ -22,6 +22,28 @@ std::string sourceGroupTypeToString(SourceGroupType v) return "unknown"; } +std::string sourceGroupTypeToProjectSetupString(SourceGroupType v) +{ + switch (v) + { + case SOURCE_GROUP_C_EMPTY: + return "Empty C Project"; + case SOURCE_GROUP_CPP_EMPTY: + return "Empty C++ Project"; + case SOURCE_GROUP_CXX_CDB: + return "C/C++ from Compilation Database"; + case SOURCE_GROUP_CXX_VS: + return "C/C++ from Visual Studio"; + case SOURCE_GROUP_JAVA_EMPTY: + return "Empty Java Project"; + case SOURCE_GROUP_JAVA_MAVEN: + return "Java Project from Maven"; + case SOURCE_GROUP_UNKNOWN: + break; + } + return "unknown"; +} + SourceGroupType stringToSourceGroupType(std::string v) { if (v == sourceGroupTypeToString(SOURCE_GROUP_C_EMPTY)) diff --git a/src/lib/settings/SourceGroupType.h b/src/lib/settings/SourceGroupType.h index 3dc80f2e..9d83e101 100644 --- a/src/lib/settings/SourceGroupType.h +++ b/src/lib/settings/SourceGroupType.h @@ -15,6 +15,7 @@ enum SourceGroupType }; std::string sourceGroupTypeToString(SourceGroupType v); +std::string sourceGroupTypeToProjectSetupString(SourceGroupType v); SourceGroupType stringToSourceGroupType(std::string v); #endif // SOURCE_GROUP_TYPE_H diff --git a/src/lib_gui/qt/element/QtCodeNavigator.cpp b/src/lib_gui/qt/element/QtCodeNavigator.cpp index c562478c..e38bacc8 100644 --- a/src/lib_gui/qt/element/QtCodeNavigator.cpp +++ b/src/lib_gui/qt/element/QtCodeNavigator.cpp @@ -165,18 +165,32 @@ void QtCodeNavigator::addFile(std::shared_ptr locationFile, locationFile->forEachStartSourceLocation( [&](SourceLocation* location) { - if (!location->isScopeLocation()) + if (location->isScopeLocation()) { - for (Id i : location->getTokenIds()) - { - Reference ref; - ref.filePath = location->getFilePath(); - ref.tokenId = i; - ref.locationId = location->getLocationId(); - ref.locationType = location->getType(); + return; + } - m_references.push_back(ref); - } + if (!location->getTokenIds().size()) + { + Reference ref; + ref.filePath = location->getFilePath(); + ref.tokenId = 0; + ref.locationId = location->getLocationId(); + ref.locationType = location->getType(); + + m_references.push_back(ref); + return; + } + + for (Id i : location->getTokenIds()) + { + Reference ref; + ref.filePath = location->getFilePath(); + ref.tokenId = i; + ref.locationId = location->getLocationId(); + ref.locationType = location->getType(); + + m_references.push_back(ref); } } ); diff --git a/src/lib_gui/qt/view/QtErrorView.cpp b/src/lib_gui/qt/view/QtErrorView.cpp index 559b9331..90e21d02 100644 --- a/src/lib_gui/qt/view/QtErrorView.cpp +++ b/src/lib_gui/qt/view/QtErrorView.cpp @@ -167,6 +167,10 @@ void QtErrorView::doAddErrors(const std::vector& errors, bool scrollT { m_table->showLastRow(); } + else + { + m_table->showFirstRow(); + } } void QtErrorView::doSetErrorId(Id errorId) diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp index 41281aa5..7da2a481 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp @@ -12,6 +12,7 @@ QtProjectWizzardContentPreferences::QtProjectWizzardContentPreferences( ) : QtProjectWizzardContent(window) , m_oldColorSchemeIndex(-1) + , m_newColorSchemeIndex(-1) { std::vector colorSchemePaths = FileSystem::getFileNamesFromDirectory(ResourcePaths::getColorSchemesPath(), std::vector(1, ".xml")); @@ -23,7 +24,7 @@ QtProjectWizzardContentPreferences::QtProjectWizzardContentPreferences( QtProjectWizzardContentPreferences::~QtProjectWizzardContentPreferences() { - if (m_oldColorSchemeIndex != -1) + if (m_oldColorSchemeIndex != -1 && m_oldColorSchemeIndex != m_newColorSchemeIndex) { colorSchemeChanged(m_oldColorSchemeIndex); } @@ -212,6 +213,7 @@ void QtProjectWizzardContentPreferences::load() { m_colorSchemes->setCurrentIndex(i); m_oldColorSchemeIndex = i; + m_newColorSchemeIndex = i; break; } } @@ -294,6 +296,7 @@ bool QtProjectWizzardContentPreferences::check() void QtProjectWizzardContentPreferences::colorSchemeChanged(int index) { + m_newColorSchemeIndex = index; MessageSwitchColorScheme(m_colorSchemePaths[index]).dispatch(); } diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h index 241d5b97..9ce4e3a7 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h @@ -52,6 +52,8 @@ private: QComboBox* m_colorSchemes; std::vector m_colorSchemePaths; int m_oldColorSchemeIndex; + int m_newColorSchemeIndex; + QCheckBox* m_useAnimations; QCheckBox* m_loggingEnabled; QCheckBox* m_verboseIndexerLoggingEnabled; diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSelect.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSelect.cpp index 11354ffe..0cb212b7 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSelect.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentSelect.cpp @@ -110,7 +110,7 @@ void QtProjectWizzardContentSelect::populate(QGridLayout* layout, int& row) for (auto projectIt: languageIt.second) { QToolButton* b = createProjectButton( - utility::insertLineBreaksAtBlankSpaces(sourceGroupTypeToString(projectIt.type), 15).c_str(), + utility::insertLineBreaksAtBlankSpaces(sourceGroupTypeToProjectSetupString(projectIt.type), 15).c_str(), (ResourcePaths::getGuiPath() + "icon/" + m_projectTypeIconName[projectIt.type] + ".png").c_str() ); b->setProperty("source_group_type", int(projectIt.type));