diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index 8682fa96..c70490b5 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -477,10 +477,10 @@ void QtCodeArea::mouseMoveEvent(QMouseEvent* event) setHoveredAnnotations(annotations); - std::vector errorMessages = m_navigator->getErrorMessages(); - if (annotations.size() == 1 && errorMessages.size() > annotations[0]->tokenId) + if (annotations.size() == 1) { - QToolTip::showText(event->globalPos(), QString::fromStdString(errorMessages[annotations[0]->tokenId])); + std::string errorMessage = m_navigator->getErrorMessageForId(annotations[0]->tokenId); + QToolTip::showText(event->globalPos(), QString::fromStdString(errorMessage)); } } } diff --git a/src/lib_gui/qt/element/QtCodeNavigator.cpp b/src/lib_gui/qt/element/QtCodeNavigator.cpp index de6f0aca..59f0bc2b 100644 --- a/src/lib_gui/qt/element/QtCodeNavigator.cpp +++ b/src/lib_gui/qt/element/QtCodeNavigator.cpp @@ -198,19 +198,26 @@ void QtCodeNavigator::setFocusedTokenIds(const std::vector& focusedTokenIds) m_focusedTokenIds = focusedTokenIds; } -std::vector QtCodeNavigator::getErrorMessages() const +std::string QtCodeNavigator::getErrorMessageForId(Id errorId) const { - std::vector errorMessages; - for (const ErrorInfo& error : m_errorInfos) + std::map::const_iterator it = m_errorInfos.find(errorId); + + if (it != m_errorInfos.end()) { - errorMessages.push_back(error.message); + return it->second.message; } - return errorMessages; + + return ""; } void QtCodeNavigator::setErrorInfos(const std::vector& errorInfos) { - m_errorInfos = errorInfos; + m_errorInfos.clear(); + + for (const ErrorInfo& info : errorInfos) + { + m_errorInfos.emplace(info.id, info); + } } bool QtCodeNavigator::hasErrors() const @@ -221,8 +228,9 @@ bool QtCodeNavigator::hasErrors() const size_t QtCodeNavigator::getFatalErrorCountForFile(const FilePath& filePath) const { size_t fatalErrorCount = 0; - for (const ErrorInfo& error : m_errorInfos) + for (const std::pair& p : m_errorInfos) { + const ErrorInfo& error = p.second; if (error.filePath == filePath && error.isFatal) { fatalErrorCount++; diff --git a/src/lib_gui/qt/element/QtCodeNavigator.h b/src/lib_gui/qt/element/QtCodeNavigator.h index 4ecf6ff6..a8519ef9 100644 --- a/src/lib_gui/qt/element/QtCodeNavigator.h +++ b/src/lib_gui/qt/element/QtCodeNavigator.h @@ -45,7 +45,7 @@ public: const std::vector& getFocusedTokenIds() const; void setFocusedTokenIds(const std::vector& focusedTokenIds); - std::vector getErrorMessages() const; + std::string getErrorMessageForId(Id errorId) const; void setErrorInfos(const std::vector& errorInfos); bool hasErrors() const; @@ -112,7 +112,7 @@ private: std::vector m_activeTokenIds; std::vector m_activeLocalSymbolIds; std::vector m_focusedTokenIds; - std::vector m_errorInfos; + std::map m_errorInfos; int m_value;