Merge remote-tracking branch 'origin/4.1'

Change-Id: Ia90424d479936a898705c433e5810c77ae088b2c
This commit is contained in:
Orgad Shaneh
2016-07-22 15:17:36 +03:00
203 changed files with 2781 additions and 2174 deletions

View File

@@ -243,11 +243,23 @@ ClangDiagnosticManager::ClangDiagnosticManager(TextEditor::TextDocument *textDoc
{
}
ClangDiagnosticManager::~ClangDiagnosticManager()
{
cleanMarks();
}
void ClangDiagnosticManager::cleanMarks()
{
for (ClangTextMark *textMark : m_clangTextMarks) {
m_textDocument->removeMark(textMark);
delete textMark;
}
m_clangTextMarks.clear();
}
void ClangDiagnosticManager::generateTextMarks()
{
m_clangTextMarks.clear();
cleanMarks();
m_clangTextMarks.reserve(m_warningDiagnostics.size() + m_errorDiagnostics.size());
addClangTextMarks(m_warningDiagnostics);
addClangTextMarks(m_errorDiagnostics);
}
@@ -332,18 +344,13 @@ ClangDiagnosticManager::diagnosticsWithFixIts() const
void ClangDiagnosticManager::addClangTextMarks(
const QVector<ClangBackEnd::DiagnosticContainer> &diagnostics)
{
QTC_ASSERT(m_clangTextMarks.size() + diagnostics.size() <= m_clangTextMarks.capacity(), return);
for (auto &&diagnostic : diagnostics) {
m_clangTextMarks.emplace_back(filePath(),
diagnostic.location().line(),
diagnostic.severity());
ClangTextMark &textMark = m_clangTextMarks.back();
textMark.setBaseTextDocument(m_textDocument);
m_textDocument->addMark(&textMark);
for (const ClangBackEnd::DiagnosticContainer &diagnostic : diagnostics) {
auto textMark = new ClangTextMark(filePath(),
diagnostic.location().line(),
diagnostic.severity());
textMark->setToolTip(diagnostic.text());
m_clangTextMarks.push_back(textMark);
m_textDocument->addMark(textMark);
}
}

View File

@@ -47,6 +47,7 @@ class ClangDiagnosticManager
{
public:
ClangDiagnosticManager(TextEditor::TextDocument *textDocument);
~ClangDiagnosticManager();
void processNewDiagnostics(const QVector<ClangBackEnd::DiagnosticContainer> &allDiagnostics);
@@ -60,6 +61,7 @@ public:
void clearDiagnosticsWithFixIts();
private:
void cleanMarks();
QString filePath() const;
void filterDiagnostics(const QVector<ClangBackEnd::DiagnosticContainer> &diagnostics);
void generateEditorSelections();
@@ -77,7 +79,7 @@ private:
QVector<ClangBackEnd::DiagnosticContainer> m_fixItdiagnostics;
QList<QTextEdit::ExtraSelection> m_extraSelections;
TextEditor::RefactorMarkers m_fixItAvailableMarkers;
std::vector<ClangTextMark> m_clangTextMarks;
std::vector<ClangTextMark *> m_clangTextMarks;
};
} // namespace Internal

View File

@@ -79,10 +79,5 @@ void ClangTextMark::setIcon(ClangBackEnd::DiagnosticSeverity severity)
TextMark::setIcon(errorIcon);
}
ClangTextMark::ClangTextMark(ClangTextMark &&other) Q_DECL_NOEXCEPT
: TextMark(std::move(other))
{
}
} // namespace ClangCodeModel

View File

@@ -36,11 +36,6 @@ class ClangTextMark : public TextEditor::TextMark
public:
ClangTextMark(const QString &fileName, int lineNumber, ClangBackEnd::DiagnosticSeverity severity);
ClangTextMark(ClangTextMark &&other) Q_DECL_NOEXCEPT;
ClangTextMark(ClangTextMark &other) = delete;
ClangTextMark &operator=(ClangTextMark &other) = delete;
private:
void setIcon(ClangBackEnd::DiagnosticSeverity severity);
};